﻿var dsi_ctrl = new Array(); // 1 - CtrlId, 2 - value, 3 - is specific (country, salon, city)
var dsi_ctrl_count = 0;
var DSI_Country = 0;
var DSI_City = 0;
var DSI_Salon = 0;
var DSI_Country_ctrl;
var DSI_City_ctrl;
var DSI_Salon_ctrl;
var DSI_Brand_ctrl;
var DSI_Designer_ctrl;
var DSI_Brand_window_ctrl;
var DSI_Designer_window_ctrl;

var DSI_IsNew = true;
var DSI_Sender_ctrl;

function DSI_OnClientSelectedIndexChanged(sender, eventArgs) {
	var DSI_SuppressSendRequest = true;
	var id = sender.get_id();
	for (var count = 0; count < dsi_ctrl_count; count++) {
		if (id == dsi_ctrl[count][0]) {
			var value = sender.get_value();
			if (dsi_ctrl[count][1] != value) {
				DSI_SuppressSendRequest = false;
			}
			dsi_ctrl[count][1] = value;
			dsi_ctrl[count][2] = false;
		}
	}

	if (!DSI_SuppressSendRequest) {
		DSI_RequestData(id);
	}
}

function DSI_OnControlLoad(sender, eventArgs) {
	dsi_ctrl[dsi_ctrl_count] = new Array();
	dsi_ctrl[dsi_ctrl_count][0] = sender.get_id();
	dsi_ctrl[dsi_ctrl_count][1] = sender.get_value();
	dsi_ctrl[dsi_ctrl_count][3] = sender;

	var pos = dsi_ctrl[dsi_ctrl_count][0].lastIndexOf('_');
	if (pos != -1) {
		var str_id = dsi_ctrl[dsi_ctrl_count][0];
		var lId = str_id.substring(pos, str_id.length);
		dsi_ctrl[dsi_ctrl_count][4] = "label_ddl" + lId;
	}

	dsi_ctrl_count++;

	if (dsi_ctrl_count == DSI_CtrlTotalCount) {
		DSI_IsNew = false;
		DSI_RequestData(0);
	}
}

function DSI_OnCountryLoad(sender, eventArgs) {
	DSI_Country_ctrl = sender.get_id();
	var value = sender.get_value();
	if (value != null && value != "undefine" && value != '') {
		DSI_Country = value;
	}
	else {
		DSI_Country = 0;
	}
}

function DSI_OnCityLoad(sender, eventArgs) {
	DSI_City_ctrl = sender.get_id();
	var value = sender.get_value();
	if (value != null && value != "undefine" && value != '') {
		DSI_City = value;
	}
	else {
		DSI_City = 0;
	}
}

function DSI_OnSalonLoad(sender, eventArgs) {
	DSI_Salon_ctrl = sender.get_id();
	var value = sender.get_value();
	if (value != null && value != "undefine" && value != '') {
		DSI_Salon = sender.value;
	}
	else {
		DSI_Salon = 0;
	}
}

//Отличное от не *_MF контролов управление.
function DSI_OnGlobalChLoad_MF(senderType, ctrlId, windowCtrl) {
	if (senderType == "brand") {
		DSI_Brand_ctrl = document.getElementById(ctrlId);
		DSI_Brand_window_ctrl = document.getElementById(windowCtrl);
	}
	else if (senderType == "designer") {
		DSI_Designer_ctrl = document.getElementById(ctrlId);
		DSI_Designer_window_ctrl = document.getElementById(windowCtrl);
	}
}

function DSI_OnCountrySelectedIndexChanged(sender, eventArgs) {
	var value = sender.get_value();
	if (DSI_Country != value) {
		DSI_Country = value;
		DSI_RequestData('-3');
	}
}

function DSI_OnCitySelectedIndexChanged(sender, eventArgs) {
	var value = sender.get_value();
	if (DSI_City != value) {
		DSI_City = value;
		DSI_RequestData('-4');
	}
}

function DSI_OnSalonSelectedIndexChanged(sender, eventArgs) {
	var value = sender.get_value();
	if (DSI_Salon != value) {
		DSI_Salon = value;
		DSI_RequestData('-5');
	}
}

function DSI_RequestData(sender) {
	var request = new Array();
	request[0] = new Array();
	request[0][0] = DSI_Cat;
	request[0][1] = DSI_Sub;
	request[0][2] = DSI_Country; //-3
	request[0][3] = DSI_City; //-4
	request[0][4] = DSI_Salon; //-5
	request[0][5] = DSI_Brand;
	request[0][6] = DSI_Designer;
	request[0][7] = DSI_Avail;

	if (!DSI_IsNew) {
		for (var count = 0; count < dsi_ctrl_count; count++) {
			var p = count + 1;
			request[p] = new Array();
			request[p][0] = dsi_ctrl[count][0];
			request[p][1] = dsi_ctrl[count][1];
		}
	}
	else {
		for (var count = 0; count < dsi_ctrl_count; count++) {
			var p = count + 1;
			request[p] = new Array();
			request[p][0] = dsi_ctrl[count][0];
			if (dsi_ctrl[count][0] != sender)
				request[p][1] = '';
			else
				request[p][1] = dsi_ctrl[count][1];
		}
	}

	DSI_IsNew = false;
	DSI_LockAllControls(sender);

	IMPOST.FrontOffice.Services.DSIService.GetProperties(request,
		DSI_OnRequestSuccess,
		DSI_OnRequestFail,
		sender);
}

function DSI_OnRequestSuccess(result, userContext, methodName) {
	if (result != null && result != "undefine") {
		var controls_objs = result[0];
		var countries_objs = result[1];
		var salons_objs = result[2];
		var cities_objs = result[3];
		var adds_data = result[4];

		for (var count = 0; count < dsi_ctrl_count; count++) {
			if (dsi_ctrl[count][0] != userContext) {
				var combo = $find(dsi_ctrl[count][0]);
				combo.enable();
				var items = combo.get_items();
				combo.trackChanges();

				for (var icount = 1, _iend = items.get_count(); icount < _iend; icount++) {
					var item = items.getItem(icount);
					var itemValue = item.get_value();
					item.disable();

					if (controls_objs != null && controls_objs != "undefine") {
						for (var ccount = 0, _cend = controls_objs.length; ccount < _cend; ccount++) {
							var ctrlId = controls_objs[ccount][0];

							if (dsi_ctrl[count][0] == ctrlId) {
								var records = controls_objs[ccount][1];
								for (var rc = 0; rc < records.length; rc++) {
									if (itemValue == records[rc][0]) {
										item.enable();
										break;
									}
								}
							}
						}
					}
				}

				combo.commitChanges();
			}
		}

		for (var count = 0; count < dsi_ctrl_count; count++) {
			var combo = $find(dsi_ctrl[count][0]);
			var item = combo.get_selectedItem();
			if (item) {
				if (combo.get_selectedIndex() > 0) {
					if (!item.get_enabled())
						combo.clearSelection();
				}
			}
			if (dsi_ctrl[count][0] != userContext) {
				var allItems = combo.get_items();
				var eflag = false;
				for (var icount = 1, _iend = allItems.get_count(); icount < _iend; icount++) {
					var i = allItems.getItem(icount);
					if (i) {
						if (i.get_enabled()) {
							eflag = true;
							break;
						}
					}
				}
				var label = document.getElementById(dsi_ctrl[count][4]);
				if (label) {
					if (!eflag) {
						label.className = "unactive";
					}
					else {
						label.className = "";
					}
				}
			}
		}

		var combo_countries = $find(DSI_Country_ctrl);
		var items_countries = combo_countries.get_items();
		var eflag_countries = false;
		combo_countries.enable();
		if ((userContext != -3 && userContext != 0) || DSI_Avail_ctrl_inStock) { // -3 = country control
			combo_countries.trackChanges();
			for (var icount = 1, _iend = items_countries.get_count(); icount < _iend; icount++) {
				var item = items_countries.getItem(icount);
				var itemValue = item.get_value();
				item.disable();

				if (countries_objs != null && countries_objs != "undefine") {
					for (var ccount = 0, _cend = countries_objs.length; ccount < _cend; ccount++) {
						if (itemValue == countries_objs[ccount][0]) {
							item.enable();
							eflag_countries = true;
							break;
						}
					}
				}
			}
			var label_countries = document.getElementById("ddl_label_country");
			if (label_countries) {
				if (!eflag_countries) {
					label_countries.className = "unactive";
				}
				else {
					label_countries.className = "";
				}
			}
			combo_countries.commitChanges();
		}
		var combo_salons = $find(DSI_Salon_ctrl);
		var items_salons = combo_salons.get_items();
		var eflag_salons = false;
		combo_salons.enable();
		combo_salons.trackChanges();
		for (var icount = 1, _iend = items_salons.get_count(); icount < _iend; icount++) {
			var item = items_salons.getItem(icount);
			var itemValue = item.get_value();
			item.disable();

			if (salons_objs != null && salons_objs != "undefine") {
				for (var ccount = 0, _cend = salons_objs.length; ccount < _cend; ccount++) {
					if (itemValue == salons_objs[ccount][0]) {
						item.enable();
						eflag_salons = true;
						break;
					}
				}
			}
		}
		var label_salons = document.getElementById("ddl_label_salon");
		if (label_salons) {
			if (!eflag_salons) {
				label_salons.className = "unactive";
			}
			else {
				label_salons.className = "";
			}
		}
		combo_salons.commitChanges();

		var combo_cities = $find(DSI_City_ctrl);
		var items_cities = combo_cities.get_items();
		var eflag_cities = false;
		combo_cities.enable();
		combo_cities.trackChanges();
		for (var icount = 1, _iend = items_cities.get_count(); icount < _iend; icount++) {
			var item = items_cities.getItem(icount);
			var itemValue = item.get_value();
			item.disable();

			if (cities_objs != null && cities_objs != "undefine") {
				for (var ccount = 0, _cend = cities_objs.length; ccount < _cend; ccount++) {
					if (itemValue == cities_objs[ccount][0]) {
						item.enable();
						eflag_cities = true;
						break;
					}
				}
			}
		}
		var label_cities = document.getElementById("ddl_label_city");
		if (label_cities) {
			if (!eflag_cities) {
				label_cities.className = "unactive";
			}
			else {
				label_cities.className = "";
			}
		}
		combo_cities.commitChanges();

		if (adds_data != null && adds_data != "undefine") {
			if (adds_data[0]) {
				DSI_Avail_ctrl.href = DSI_Avail_ctrl_href;
				if (DSI_Avail_ctrl_inStock) {
					DSI_Avail_ctrl.className = 'w_80 prm_slct';
				} else {
					DSI_Avail_ctrl.className = 'w_80';
				}
			} else {
				DSI_Avail_ctrl.href = '#';
				DSI_Avail_ctrl.className = 'w_80d';
			}
		}
	}
}

function DSI_OnRequestFail() {
	DSI_UnlockAllControls();
}

function DSI_LockAllControls(sender) {
	for (var count = 0; count < dsi_ctrl_count; count++) {
		if (sender != dsi_ctrl[count][0]) {
			var combo = $find(dsi_ctrl[count][0]);
			combo.disable();
		}
	}
	if (DSI_City_ctrl != "undefine" && DSI_City_ctrl != null) {
		$find(DSI_City_ctrl).disable();
	}
	if (DSI_Country_ctrl != "undefine" && DSI_Country_ctrl != null) {
		$find(DSI_Country_ctrl).disable();
	}
	if (DSI_Salon_ctrl != "undefine" && DSI_Salon_ctrl != null) {
		$find(DSI_Salon_ctrl).disable();
	}
}

function DSI_UnlockAllControls() {
	for (var count = 0; count < dsi_ctrl_count; count++) {
		var combo = $find(dsi_ctrl[count][0]);
		combo.enable();
	}
	if (DSI_City_ctrl != "undefine" && DSI_City_ctrl != null) {
		$find(DSI_City_ctrl).enable();
	}
	if (DSI_Country_ctrl != "undefine" && DSI_Country_ctrl != null) {
		$find(DSI_Country_ctrl).enable();
	}
	if (DSI_Salon_ctrl != "undefine" && DSI_Salon_ctrl != null) {
		$find(DSI_Salon_ctrl).enable();
	}
}