<krpano version="1.20.9">



// hide the shop hotspots if the user not loged-in
<action name="check_is_staging_server" type="Javascript" autorun="preinit" protect="true" ><![CDATA[
	window.staging_server = false;
	if(location.hostname.endsWith('vicinity.atomic3d.com.au'))
		window.staging_server = true;

	if(window.staging_server==false){
		krpano.set("debugkeys",false);
		krpano.set("logkey",false);
		krpano.set("showerrors",false);
	}

	// window.exitfullscreen_handler = function(){
		// console.log("00000000000");
		// $("#krpanoSWFObject").focus();
		// setTimeout(function(){
			// $("#krpanoSWFObject").focus();
		// },100);
	// }
	// krpano.set("events[fullscreener].keep", true);
	// krpano.set("events[fullscreener].onexitfullscreen", exitfullscreen_handler);


]]></action>




// init analytics functions
<action name="init_analytics" type="Javascript" autorun="preinit" protect="true" ><![CDATA[
	window.getUrlParameter = function getUrlParameter(sParam) {
	  var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split("&"), sParameterName, i;
	  for (i = 0; i < sURLVariables.length; i++) {sParameterName = sURLVariables[i].split("=");if (sParameterName[0] === sParam) {return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);}}
	};
	window.center_name = "";
	window.send_analytics = function(type,data1,data2,data3,data4){
		if(typeof data1 == "string")
			data1 = data1.replace(/````/g, "'");
		if(typeof data2 == "string")
			data2 = data2.replace(/````/g, "'");

		if(type=="open_popup"){
			console.log("send_analytics"," | event_id: " + type, " | label: " + data1, " | text: " + data2, " | category: " + data3);
			if(window.parent && window.self !== window.top){
				window.parent.postMessage({
					event_id: type,
					data: {
						'label' : data1,
						'text': data2,
						'category': data3
					}
				},"*");
			}
		}else if(type=="download_content"){
			data1 = data1.replace(/````/g, "'");
			data2 = data2.replace(/````/g, "'");
			data3 = data3.replace(/````/g, "'");
			data4 = data4.replace(/````/g, "'");
			console.log("send_analytics"," | event_id: " + type, " | label: " + data1, " | text: " + data2, " | category: " + data3, " | retailer: " + data4);
			if(window.parent && window.self !== window.top){
				window.parent.postMessage({
					event_id: type,
					data: {
						'label' : data1,
						'text': data2,
						'category': data3,
						'retailer': data4
					}
				},"*");
			}
		}else{
			console.log("send_analytics"," | event_id: " + type, " | data: " + data1);
			if(window.parent && window.self !== window.top){
				window.parent.postMessage({
					event_id: type,
					data: {
						data: data1
					}
				},"*");
			}
		}
	}

	krpano.set("events[analytics].keep", true);
	window.wait_for_user_first_interaction = false;

	if(getUrlParameter("startscene")==undefined || getUrlParameter("startscene")==""){
		window.wait_for_user_first_interaction = true;
		window.first_interaction = function(){
			if(window.wait_for_user_first_interaction == true)
				send_analytics("change_scene",krpano.get("xml.scene"),"");
			window.wait_for_user_first_interaction = false;
			krpano.set("events[analytics].onmousedown", "");
		}
		krpano.set("events[analytics].onmousedown", first_interaction);
	}

	window.analytics_change_scene = function(){
		if(window.wait_for_user_first_interaction == false){
			send_analytics("change_scene",krpano.get("xml.scene"),(window.previous_scene==undefined?"":window.previous_scene));
		}
		//if(window.previous_scene == undefined)
			window.previous_scene = krpano.get("XML.scene");
	}
	krpano.set("events[analytics].onnewpano", analytics_change_scene);

	krpano.set("layer[helicopter_button].onclick",  krpano.get("layer[helicopter_button].onclick") + ";send_analytics_helicopter_btn();");
]]></action>
<action name="send_analytics_helicopter_btn" type="Javascript" ><![CDATA[
	send_analytics("helicopter_btn","","");
]]></action>



//HAMID Search plugin
	<layer name="fuzzysearch_placeholder" align="topright" type="container" alpha="1"
	x="165"
	y="46"
	zorder="9"
	width.normal="30%"
	width.mobile="50%"
	keep="true"
	scalechildren="true"
	onhover="showtext(Search for a shop,DEFAULT_search)"
		   />

	<plugin name="fuzzysearch"
			url="%SWFPATH%/plugins/fuzzysearch.js?3"
			keep="true"
			devices="html5"
			width="100%"
			x="0"
			y="0"
			align="topright"
			parent="fuzzysearch_placeholder"
			include_jquery="true"
			auto_generate_scenes_list="false"
			group_scenes="false"
			theme="style_01"
			font_size="13"
			font_name="Primary"
			textcolor="0x000000"
			bgcolor="0xffffff"
			bgalpha="1"
			bordercolor="0xaaaaaa"
			borderalpha="1"
			selected_item_textcolor="0x000000"
			selected_item_bgcolor="0xf2f2f2"
			selected_item_bgalpha="1"
			button_bgcolor="0xed143d"
			button_bgalpha="1"
			button_textcolor="0xffffff"
			categorybgcolor="0xeeeeee"
			categorybgalpha="1"
			categorytextcolor="0xaaaaaa"
			maxheight="200px"
			text_direction="ltr"
			placeholder="Enter a shop name or ID"
			onInitialized="get_data_from_api()"
			responsive222="true"
	/>
<events name="close_search_box" onviewchange222="close_search_box()" onmousedown="close_search_box_click()" keep="true" devices="mobile|tablet" />
<action name="close_search_box_click" type="Javascript"  ><![CDATA[
	if(window.jQuery){
		if($(".open .chosen-with-drop").length > 0){
			$(".open .chosen-with-drop").removeClass("chosen-with-drop");
			$(".fuzzysearch_plugin div").removeClass("open");
			$(".chosen-search-input").blur();
			$(".chosen-select").blur();
			$("#krpanoSWFObject").focus();
		}
	}
]]></action>
<action name="close_search_box" type="Javascript"  ><![CDATA[
	if(window.jQuery){
		var view_hlookat = Math.round(krpano.get("view.hlookat")/2)*2;
		var view_vlookat = Math.round(krpano.get("view.vlookat")/2)*2;
		var view_fov	 = Math.round(krpano.get("view.fov"));

		if(typeof previous_view_hlookat=="undefined"){
			previous_view_hlookat = view_hlookat;
			previous_view_vlookat = view_vlookat;
			previous_fov = view_fov;
		}

		var do_we_have_any_changes = false;

		if(previous_view_hlookat != view_hlookat)
		{
			previous_view_hlookat = view_hlookat;
			do_we_have_any_changes = true;
		}
		if(previous_view_vlookat != view_vlookat)
		{
			previous_view_vlookat = view_vlookat;
			do_we_have_any_changes = true;
		}
		if(previous_fov != view_fov)
		{
			previous_fov = view_fov;
			do_we_have_any_changes = true;
		}
		if(do_we_have_any_changes)
		{
			if($(".open .chosen-with-drop").length > 0){
				$(".open .chosen-with-drop").removeClass("chosen-with-drop");
				$(".fuzzysearch_plugin div").removeClass("open");
				$(".chosen-search-input").blur();
				$(".chosen-select").blur();
				$("#krpanoSWFObject").focus();
			}
		}
	}
]]></action>

//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.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;
            var tempArray = [];
            //set data for search
            var searchData = [];
            for(var i = 0; i < arraySize; i++){
                tempArray[data[i].unit_key] = data[i];
                searchData.push(data[i]);
				window.center_name = data[i].centre_name;
            }
            // console.log("tempArray",tempArray);

			/*
			// 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));
			*/

            window.mal_data = tempArray;
            window.search_date = searchData;

            krpano.call("set_hotspot_data()");

            /*set fuzzy search*/
            var scenes = krpano.get('scene').getArray();
            var scenesArraySize = scenes.length;
            var shopsInScene = [];
            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) {
                        shopsInScene.push(parseInt(shopsArray[index]));
                    }
                } catch (e) {

                }
            }

			window.shopInService = [];
    var shopInXml = [];
    window.added_item = [];
            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;
                    // krpano.call('plugin[fuzzysearch].addItem("' + data[i].unit_code + '","jscall(find_shop(' + i + '))")');
                    // krpano.call('plugin[fuzzysearch].addItem("' + data[i].leasing_tenant  + '","jscall(find_shop(' + i + '))")');
                    if(window.search_on_shopid == true)
						krpano.call('plugin[fuzzysearch].addItem("' + data[i].unit_code       + '","jscall(find_shop(' + i + ');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 + ');send_analytics(\'search\',\'' + (data[i].leasing_tenant==""?data[i].unit_code:data[i].leasing_tenant.replace(/'/g, "````")) + '\',\'\');)")');
                }else{
                    //console.log('not include data => ', json.data[i].unit);
					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]);
			// console.log('****',shopsInScene[index]);
        }
    }
	if(window.staging_server==true){
		console.log('shop in api', JSON.stringify(shopInService));
		console.log('shop in xml', JSON.stringify(shopInXml));
	}

            window.find_shop = function(searchKey, data2) {
                try {
                    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>

	<events onnewpano="set_hotspot_data();" keep="true"></events>

	<style name="shop_unset"></style>

	<action name="set_hotspot_data" type="Javascript" protect="true" ><![CDATA[
	  if(window.mal_data){
		var hotspots = krpano.get("hotspot").getArray();
		var arraySize = hotspots.length;
		for(var i = 0; i< arraySize; i++){
			if(hotspots[i].style === 'shop_unset'){
			  try{
                console.log(hotspots[i].unit_key);
				var dataItem = window.mal_data[hotspots[i].unit_key];
				// krpano.set("hotspot["+hotspots[i].name+"].title", dataItem.retailer);
				krpano.set("hotspot["+hotspots[i].name+"].title", dataItem.unit_key);
				krpano.call("hotspot["+hotspots[i].name+"].loadstyle(shop)");
			  }catch(error){
				//console.log('error in array', error);
			  }
			}

			if(hotspots[i].style === 'shop'){
            try{
                //console.log("set hotpspot title",hotspots[i].unit_key);
                var dataItem = window.mal_data[hotspots[i].unit_key];
                // krpano.set("hotspot["+hotspots[i].name+"].title", dataItem.retailer);
                // krpano.set("hotspot["+hotspots[i].name+"].title", dataItem.unit_code);
				if(dataItem.leasing_tenant=="" || dataItem.leasing_tenant==null || dataItem.leasing_tenant==undefined)
					dataItem.leasing_tenant = "---";
                krpano.set("hotspot["+hotspots[i].name+"].title", dataItem.leasing_tenant.replace("[","&#91;").replace("]","&#93;"));
                krpano.set("hotspot["+hotspots[i].mytext+"].html", dataItem.leasing_tenant.replace("[","&#91;").replace("]","&#93;"));

				//add generation of krpano data by jerome for VR version

					var content = "";

					content += "<h1>" + dataItem.leasing_tenant + "</h1>";
        			content += "<p>";
       				content += '<ul class="shoplist">';
					content += '<li class="catname">Category : ' + dataItem.category + '</li>';
					content += '<li class="catname">Area : ' + dataItem.gla + '</li>';
					content += '<li class="catname">Level : ' + dataItem.floor + '</li>';
					content += '<li class="catname">Shop ID : ' + dataItem.unit_code + '</li>';
					content += '</ul>';
        			content += '</p>';

					krpano.set("data["+hotspots[i].name+"].content", content);

            }catch(error){
                //console.log('error in array', error);
            }
        }
		  }
		}
	]]></action>

// Temporary style for hotspots - added by Hamid on 2021-05-05
<style name="skin_hotspotstyle" url="vtourskin_hotspot.png" edge="center" align="center" distorted="false"
	   tooltip=""
	   linkedscene=""
	   linkedscene_lookat=""
	   onclick="skin_hotspotstyle_click();"
	   depth="1000"
	   scale="0.5"
	   onover.addevent="tween(scale,0.5);"
	   onout.addevent="tween(scale,0.5);"
	   onloaded.addevent="skin_hotspotstyle_setup();"
	   onloaded="add_all_the_time_tooltip();"
	   />
<action name="add_all_the_time_tooltip">
txtadd(tooltipname, 'tooltip_', get(name));
addplugin(get(tooltipname)); txtadd(plugin[get(tooltipname)].parent, 'hotspot[',get(name),']');
set(plugin[get(tooltipname)].url,'%SWFPATH%/plugins/textfield.swf');
set(plugin[get(tooltipname)].align,center);
set(plugin[get(tooltipname)].edge,center);
set(plugin[get(tooltipname)].x,0);
set(plugin[get(tooltipname)].y,0);
set(plugin[get(tooltipname)].width,200);
set(plugin[get(tooltipname)].autoheight,true);
set(plugin[get(tooltipname)].background,false);
set(plugin[get(tooltipname)].border,false);
set(plugin[get(tooltipname)].css,'text-align:center; color:#FFFFFF; font-family:Arial; font-weight:bold; font-size:16px;');
set(plugin[get(tooltipname)].textshadow,1); set(plugin[get(tooltipname)].textshadowrange,6.0); set(plugin[get(tooltipname)].textshadowangle,90);
copy(plugin[get(tooltipname)].html,hotspot[get(name)].unit_key);
set(plugin[get(tooltipname)].enabled,false);
</action>


<action name="popup" type="Javascript" protect="true"><![CDATA[
// Start edit by Hamid - 2021-05-03 -------------------------------------------------------------
var popupcontent = "";
try {
    var item = window.mal_data[krpano.get("hotspot[" + args[1] + "].unit_key")];
    if (item) {
        //content += "<h1>" + item.retailer + "<span class='shopid'>"+item.unit_code+"</span></h1>";
        popupcontent += "<h1>" + item.leasing_tenant + "</h1>";
        popupcontent += "<p>";
        popupcontent += '<ul class="shoplist">';
        popupcontent += '<li class="category">' + item.category + '</li>';
        popupcontent += '<li class="area">' + item.gla + '</li>';
        popupcontent += '<li class="level">' + item.floor + '</li>';
        popupcontent += '<li class="shopid">' + item.unit_code + '</li>';
        try {
            if (item.controls) {
                for (var index in item.controls) {
                    var listItem = item.controls[index];
                    var nameClass =  listItem.name.replace(' ', '').toLowerCase();

					// console.log(listItem);
					// console.log(item.category);

					// send_analytics("open_popup",item.centre_name + " - " + item.unit_key,listItem.name, item.category,(item.leasing_tenant==""?item.unit_code:item.leasing_tenant));
					// console.log('<li class="' + nameClass + '" onclick=\'send_analytics("download_content","' + item.centre_name + " - " + item.unit_key + '","' + listItem.name + '","' + item.category + '","' + (item.leasing_tenant==""?item.unit_code:item.leasing_tenant) + '");\' >' + '<a target="_blank" href="' + listItem.url + '">Download</a></li>');
					// popupcontent += '<li class="' + nameClass + '" onclick=\'send_analytics("download_content","' + item.centre_name + " - " + item.unit_key + '","' + listItem.name + '","' + item.category.replace(/'/g, "````") + '","' + (item.leasing_tenant==""?item.unit_code:item.leasing_tenant) + '");\' >' + '<a target="_blank" href="' + listItem.url + '">Download</a></li>';
					// popupcontent += '<li class="' + nameClass + '" onclick=\'send_analytics("download_content","' + item.centre_name + " - " + item.unit_key + '","' + listItem.name.replace(/'/g, "````") + '","' + item.category.replace(/'/g, "````") + '","' + (item.leasing_tenant==""?item.unit_code:item.leasing_tenant) + '");\' >' + '<a target="_blank" href="' + listItem.url + '">Download</a></li>';
					popupcontent += '<li class="' + nameClass + '" onclick=\'send_analytics("download_content","' + item.centre_name.replace(/'/g, "````") + " - " + item.unit_key + '","' + listItem.name.replace(/'/g, "````") + '","' + item.category.replace(/'/g, "````") + '","' + (item.leasing_tenant==""?item.unit_code:item.leasing_tenant).replace(/'/g, "````") + '");\' >' + '<a target="_blank" href="' + listItem.url + '">Download</a></li>';
                }
            }
        } catch (e) {
			// console.log(e);
        }
        popupcontent += '</ul>';
        popupcontent += '</p>';
    }
} catch (error) {
    console.log('error***', error);
}
// End edit by Hamid - 2021-05-03 -------------------------------------------------------------

let scroller = document.getElementById("scroller");
let inner_scroller = document.getElementById("inner_scroller");

// Start edit by Hamid - 2021-05-03 -------------------------------------------------------------
// let datacontent = '<div class="text_content">' + krpano.get("data["+args[1]+"].content")+ '</div>';
let datacontent = '<div class="text_content">' + popupcontent + '</div>';
// End edit by Hamid - 2021-05-03 -------------------------------------------------------------

inner_scroller.innerHTML = datacontent;
window.krpano = krpano;
if(!krpano.device.ios){$("#scroller").niceScroll({autohidemode:"scroll",cursorcolor:"#fff",cursoropacitymax:0.7,cursorwidth:3,cursorborder:"1px solid #fff",cursorborderradius:"0px"});};
krpano.call("show_html_div()");
// console.log(item);
// send_analytics("open_popup",(item.leasing_tenant==""?item.unit_code:item.leasing_tenant),"");
send_analytics("open_popup",item.centre_name + " - " + item.unit_key,(item.leasing_tenant==""?item.unit_code:item.leasing_tenant), item.category);
]]></action>

</krpano>
