<krpano version="1.20.9">


//HAMID FETCH SHOP HS DATA

<action name="get_data_from_api" type="Javascript" protect2="true" ><![CDATA[
	if(getUrlParameter("startscene")==undefined || getUrlParameter("startscene")==""){
		$(".fuzzysearch_plugin").click(function(){
			first_interaction();
		});
		$("body").click(function(){
			first_interaction();
		});				
	}

	$(".fuzzysearch_plugin .chosen-container").mouseenter(function() {
		krpano.set("layer[fuzzysearch_placeholder].onhover","");
	}).mouseleave(function() {
		krpano.set("layer[fuzzysearch_placeholder].onhover","showtext(Search for a shop,DEFAULT_search)");
	});

	window.tempArray = [];
	window.searchData = [];
	window.added_item = [];
	window.shopsInScene = [];
	window.shopInService = [];
	window.shopInXml = [];
	window.mal_data = [];
	window.search_date = [];
	window.search_date2 = [];
	window.search_date3 = [];
	window.search_date4 = [];
	
	window.staging_server = false;
	if(location.hostname.endsWith('vicinity.atomic3d.com.au'))
		window.staging_server = true;

	var url = "https://api.vicinity.com.au/oauth/accesstoken?grant_type=client_credentials";
	if(staging_server)
		var url = "https://www.vicinity.atomic3d.com.au/api.php";
	
	var xhr = new XMLHttpRequest();
	if(staging_server)
		xhr.open("POST", url, true);
	else
		xhr.open("GET", url, true);
	xhr.setRequestHeader('Authorization', 'Basic WjgxdHBIcTlXS3dPQU1zWHZyVVRsQ0F5YU05YU9zamY6MlMybkFqRTg4RXZUY25uUw==');
	xhr.setRequestHeader('Accept', '*/*');

	var formData = new FormData()
	
	if(staging_server)
		formData.append('url', "https://api.vicinity.com.au/oauth/accesstoken?grant_type=client_credentials");
	
	xhr.send(formData);
	xhr.onreadystatechange = function () {
		if (this.readyState == 4 && this.status == 200) {
			var response = JSON.parse(this.response);
			window.token = response.access_token;
			getData(token);
		}
	};
	
function getData(token) {
	if(krpano.get("mall_name")!=null)
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?filter=centre_name=="' + krpano.get("mall_name") + '"';
	else
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?filter=centre_key==' + krpano.get("centre_key");
    if(staging_server)
		var url = "https://www.vicinity.atomic3d.com.au/api.php";

    var xhr = new XMLHttpRequest();
	if(staging_server)
		xhr.open("POST", url, true);
	else
		xhr.open("GET", url, true);
    xhr.setRequestHeader('Authorization', "Bearer " + token);
    var formData = new FormData();
	if(staging_server){
		if(krpano.get("mall_name")!=null)
			formData.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?filter=centre_name=="' + krpano.get("mall_name") + '"');
		else
			formData.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?filter=centre_key==' + krpano.get("centre_key") + '');
		formData.append('method', "GET");
	}
    xhr.send(formData);
    xhr.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            var response = JSON.parse(this.response);
            var data = response.data;
            var arraySize = data.length;
            //set data for search
            for(var i = 0; i < arraySize; i++){
                window.mal_data[data[i].unit_key] = data[i];
				window.search_date.push(data[i]);
				window.center_name = data[i].centre_name;
            }
            
            krpano.call("set_hotspot_data()");
			/*
			// https://data.page/json/csv
			var ExcelArray = [];
			var arraySize = search_date.length;
			for(var i = 0; i < arraySize; i++){
				ExcelArray.push([search_date[i].unit_key,search_date[i].unit_code,search_date[i].leasing_tenant,search_date[i].category,search_date[i].floor]);
			}
			console.log("ExcelArray",ExcelArray);
			console.log(JSON.stringify(ExcelArray));
			*/


            /*set fuzzy search*/
            var scenes = krpano.get('scene').getArray();
            var scenesArraySize = scenes.length;
            for (var i = 0; i < scenesArraySize; i++) {
				//console.log('scenes[i]', scenes[i]);
                if (!scenes[i].shops) {
					continue;
                }
                try {
                    var shops = scenes[i].shops;
                    var shopsArray = shops.split(',');
                    for (var index in shopsArray) {
                        window.shopsInScene.push(parseInt(shopsArray[index]));
                    }
                } catch (e) {

                }
            }
			
            // var shopInService = [];
            for (var i = 0; i < arraySize; i++) {
                if (shopsInScene.includes(data[i].unit_key) && !(data[i].unit_key in added_item)) {
                    added_item[data[i].unit_key] = true;
                    if(window.search_on_shopid == true)
						krpano.call('plugin[fuzzysearch].addItem("' + data[i].unit_code       + '","jscall(find_shop(' + i + ',\'data\');send_analytics(\'search\',\'' + (data[i].leasing_tenant==""?data[i].unit_code:data[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
					krpano.call('plugin[fuzzysearch].addItem("' + data[i].leasing_tenant  + '","jscall(find_shop(' + i + ',\'data\');send_analytics(\'search\',\'' + (data[i].leasing_tenant==""?data[i].unit_code:data[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
                }else{
					shopInService.push(data[i].unit_key);
				}
            }
			// sort the list order/////////////////////////////////
			var options = $('select.chosen-select option');
			var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value, d: $(o).attr("data-click") }; }).get();
			// arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; });
			// arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.localeCompare(o2.t, undefined, { numeric: true, sensitivity: 'base' }));
			arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.replace(/_/, 'z').localeCompare(o2.t.replace(/_/, 'z'), undefined, { numeric: true, sensitivity: 'base' }));
			options.each(function(i, o) {
			  o.value = arr[i].v;
			  $(o).attr("data-click",arr[i].d);
			  $(o).text(arr[i].t);
			});
			$(".chosen-select").trigger('chosen:updated');
			/**/


			var keyArray = Object.keys(tempArray);
			for(var index in shopsInScene){
				if(!keyArray.includes(shopsInScene[index].toString())){
					shopInXml.push(shopsInScene[index]);
				}
			}
			if(window.staging_server==true){
				console.log('shop in api', JSON.stringify(shopInService));
				console.log('shop in xml', JSON.stringify(shopInXml));
			}
        }
    };
    
    
    
	
	
	if(krpano.get("mall_name")!=null)
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?page=2&filter=centre_name=="' + krpano.get("mall_name") + '"';
	else
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?page=2&filter=centre_key==' + krpano.get("centre_key");
    if(staging_server)
		var url = "https://www.vicinity.atomic3d.com.au/api.php";

	
	
    var xhr2 = new XMLHttpRequest();
	if(staging_server)
		xhr2.open("POST", url, true);
	else
		xhr2.open("GET", url, true);
    xhr2.setRequestHeader('Authorization', "Bearer " + token);

	var formData2 = new FormData();
	if(staging_server){
		if(krpano.get("mall_name")!=null)
			formData2.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?page=2&filter=centre_name=="' + krpano.get("mall_name") + '"');
		else
			formData2.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?page=2&filter=centre_key==' + krpano.get("centre_key") + '');
		formData2.append('method', "GET");
	}
    xhr2.send(formData2);
    xhr2.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            var response = JSON.parse(this.response);
            window.data2 = response.data;
            var arraySize = data2.length;
            //set data2 for search
            for(var i = 0; i < arraySize; i++){
                window.mal_data[data2[i].unit_key] = data2[i];
                 window.search_date2.push(data2[i]);
            }
            
            krpano.call("set_hotspot_data()");

            /*set fuzzy search*/
            var scenes = krpano.get('scene').getArray();
            var scenesArraySize = scenes.length;
            for (var i = 0; i < scenesArraySize; i++) {
				//console.log('scenes[i]', scenes[i]);
                if (!scenes[i].shops) {
                    continue;
                }
                try {
                    var shops = scenes[i].shops;
                    var shopsArray = shops.split(',');
                    for (var index in shopsArray) {
                        window.shopsInScene.push(parseInt(shopsArray[index]));
                    }
                } catch (e) {

                }
            }
			
            // var shopInService = [];
            for (var i = 0; i < arraySize; i++) {
                if (window.shopsInScene.includes(data2[i].unit_key) && !(data2[i].unit_key in added_item)) {
                    added_item[data2[i].unit_key] = true;
					// console.log(data2[i].leasing_tenant);
					if(window.search_on_shopid == true)
						krpano.call('plugin[fuzzysearch].addItem("' + data2[i].unit_code       + '","jscall(find_shop(' + i + ',\'data2\');send_analytics(\'search\',\'' + (data2[i].leasing_tenant==""?data2[i].unit_code:data2[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
					krpano.call('plugin[fuzzysearch].addItem("' + data2[i].leasing_tenant  + '","jscall(find_shop(' + i + ',\'data2\');send_analytics(\'search\',\'' + (data2[i].leasing_tenant==""?data2[i].unit_code:data2[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
                }else{
					shopInService.push(data2[i].unit_key);
				}
            }
			// sort the list order/////////////////////////////////
			var options = $('select.chosen-select option');
			var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value, d: $(o).attr("data-click") }; }).get();
			// arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; });
			// arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.localeCompare(o2.t, undefined, { numeric: true, sensitivity: 'base' }));
			arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.replace(/_/, 'z').localeCompare(o2.t.replace(/_/, 'z'), undefined, { numeric: true, sensitivity: 'base' }));
			options.each(function(i, o) {
			  o.value = arr[i].v;
			  $(o).attr("data-click",arr[i].d);
			  $(o).text(arr[i].t);
			});
			$(".chosen-select").trigger('chosen:updated');
			/**/

			var keyArray = Object.keys(tempArray);
			for(var index in shopsInScene){
				if(!keyArray.includes(shopsInScene[index].toString())){
					shopInXml.push(shopsInScene[index]);
				}
			}
        }
    };






	if(krpano.get("mall_name")!=null)
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?page=3&filter=centre_name=="' + krpano.get("mall_name") + '"';
	else
		var url = 'https://api.vicinity.com.au/v3/leasing-digital-info?page=3&filter=centre_key==' + krpano.get("centre_key");
    if(staging_server)
		var url = "https://www.vicinity.atomic3d.com.au/api.php";


    var xhr3 = new XMLHttpRequest();
	if(staging_server)
		xhr3.open("POST", url, true);
	else
		xhr3.open("GET", url, true);
    xhr3.setRequestHeader('Authorization', "Bearer " + token);

	var formData3 = new FormData();
	if(staging_server){
		if(krpano.get("mall_name")!=null)
			formData3.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?page=3&filter=centre_name=="' + krpano.get("mall_name") + '"');
		else
			formData3.append('url', 'https://api.vicinity.com.au/v3/leasing-digital-info?page=3&filter=centre_key==' + krpano.get("centre_key") + '');
		formData3.append('method', "GET");
	}    xhr3.send(formData3);
    xhr3.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            var response = JSON.parse(this.response);
            window.data3 = response.data;
            var arraySize = data3.length;
            for(var i = 0; i < arraySize; i++){
                window.mal_data[data3[i].unit_key] = data3[i];
                 window.search_date3.push(data3[i]);
            }
            
            krpano.call("set_hotspot_data()");

            /*set fuzzy search*/
            var scenes = krpano.get('scene').getArray();
            var scenesArraySize = scenes.length;
            for (var i = 0; i < scenesArraySize; i++) {
                if (!scenes[i].shops) {
                    continue;
                }
                try {
                    var shops = scenes[i].shops;
                    var shopsArray = shops.split(',');
                    for (var index in shopsArray) {
                        window.shopsInScene.push(parseInt(shopsArray[index]));
                    }
                } catch (e) {

                }
            }
			
            // var shopInService = [];
            for (var i = 0; i < arraySize; i++) {
                if (window.shopsInScene.includes(data3[i].unit_key) && !(data3[i].unit_key in added_item)) {
                    added_item[data3[i].unit_key] = true;
					// console.log(data3[i].leasing_tenant);
					if(window.search_on_shopid == true)
						krpano.call('plugin[fuzzysearch].addItem("' + data3[i].unit_code       + '","jscall(find_shop(' + i + ',\'data3\');send_analytics(\'search\',\'' + (data3[i].leasing_tenant==""?data3[i].unit_code:data3[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
					krpano.call('plugin[fuzzysearch].addItem("' + data3[i].leasing_tenant  + '","jscall(find_shop(' + i + ',\'data3\');send_analytics(\'search\',\'' + (data3[i].leasing_tenant==""?data3[i].unit_code:data3[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
                }else{
					shopInService.push(data3[i].unit_key);
				}
            }
			// sort the list order/////////////////////////////////
			var options = $('select.chosen-select option');
			var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value, d: $(o).attr("data-click") }; }).get();
			// arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; });
			// arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.localeCompare(o2.t, undefined, { numeric: true, sensitivity: 'base' }));
			arr.sort((o1, o2) => isFinite(o1.t[0]) - isFinite(o2.t[0]) || o1.t.replace(/_/, 'z').localeCompare(o2.t.replace(/_/, 'z'), undefined, { numeric: true, sensitivity: 'base' }));
			options.each(function(i, o) {
			  o.value = arr[i].v;
			  $(o).attr("data-click",arr[i].d);
			  $(o).text(arr[i].t);
			});
			$(".chosen-select").trigger('chosen:updated');
			/**/

			var keyArray = Object.keys(tempArray);
			for(var index in shopsInScene){
				if(!keyArray.includes(shopsInScene[index].toString())){
					shopInXml.push(shopsInScene[index]);
				}
			}
        }
    };

}



	window.find_shop = function(searchKey, data2) {
		try {
			if(data2 == "data2")
				var data = window.search_date2[searchKey];
			else if(data2 == "data3")
				var data = window.search_date3[searchKey];
			else if(data2 == "data4")
				var data = window.search_date4[searchKey];
			else
				var data = window.search_date[searchKey];

			var scenes = krpano.get('scene').getArray();
			var arraySize = scenes.length;
			var sceneFound = false;
			for (var i = 0; i < arraySize; i++) {
				if (!scenes[i].shops) {
					continue;
				}

				try {
					var shops = scenes[i].shops;
					var shopsArray = shops.split(',');
					for (var index in shopsArray) {
						if (parseInt(shopsArray[index]) === data.unit_key) {
							var sceneName = scenes[i].name;

							krpano.call('loadscene("' + sceneName + '", null, MERGE, BLEND(1))');

							var hotspots = krpano.get('hotspot').getArray();
							for (var hotspotIndex in hotspots) {
								if (parseInt(hotspots[hotspotIndex].unit_key) === data.unit_key) {
									var name = hotspots[hotspotIndex].name;
									krpano.call('looktohotspot("' + name + '","90")');
								}
							}

							sceneFound = true;
							break;
						}
					}

					if (sceneFound) {
						break;
					}
				} catch (e) {
					console.log('error slave', e.message);
				}
			}
		} catch (e) {
			console.log('error master', e.message);
		}
	}




	]]></action>


</krpano>
