', {
id: 'inline-map',
style: 'width: 600px; height: 400px; display: none;'
});
ihbookingContainer.append(mapContainer);
//PARENT WINDOW CONTROLLER (via postMessages)
function addListner(host){
//KHR: this script allows your site to receive messages from iFrame element
window.addEventListener('message', function(event) {
// IMPORTANT: check the origin (iframe document URL) of the data!
if (~event.origin.indexOf(host)) {
var receivedData = event.data;
var scrollerTopSetting = $('#'+IFRAME_ID).offset() ? $('#'+IFRAME_ID).offset().top - 10 : 0;
if (receivedData.funcName == '_doScrollTop'){
//console.log("_doScrollTop");
//scroller factory settings
$('html,body').animate({ scrollTop: scrollerTopSetting }, 'fast');
}else if (receivedData.funcName == '_doScrollToMap'){
//console.log("_doScrollMap");
$("body,html").animate({scrollTop: receivedData.offsetTop + scrollerTopSetting}, "fast");
}
else if (receivedData.funcName == '_doTest'){
alert("This is alert of parent window invoked from iframe with host: " + host);
}
else if (receivedData.funcName == '_doAppendToUrl'){
var newSearch = "";
if (location.search.length > 0){
console.log(location.search);
var locSearch = location.search.replace('?','');
var pairs = locSearch.split("&");
var newPairs = [];
var replaceFlag = false;
for (var i = 0; i < pairs.length; i++){
var tmpKey = pairs[i].split("=")[0];
var tmpVal = pairs[i].split("=")[1];
//escape this param when needed
if (tmpKey === receivedData.appendingKey && receivedData.appendingVal === ""){
replaceFlag = true;
continue;
}
if (tmpKey === receivedData.appendingKey){
tmpVal = receivedData.appendingVal;
replaceFlag = true;
}
newPairs.push(tmpKey + "=" + tmpVal);
}
var newLocSearch = newPairs.join("&");
if (!replaceFlag && receivedData.appendingVal.length > 0)
newLocSearch += "&" + receivedData.appendingKey + "=" + receivedData.appendingVal;
newSearch = "?" + newLocSearch;
}
else
{
if (receivedData.appendingVal.length > 0)
newSearch = "?" + receivedData.appendingKey + "=" + receivedData.appendingVal;
}
if (newSearch === "?") newSearch = "";
var resultUrl = location.protocol + '//' + location.host + location.pathname + newSearch;
console.log(resultUrl);
window.history.replaceState(null, null, resultUrl);
}
else if (receivedData.funcName == '_doReachYandexGoal'){
//console.log("ya reachGoal id=" + receivedData.targetId + " was called with postmsg");
for (var wProp in window) {
if (wProp.indexOf('yaCounter') !== -1){
var cnt = window[wProp];
if (cnt && typeof cnt.reachGoal === 'function'){
//console.log("cnt exists: ", wProp, cnt);
try{
cnt.reachGoal(receivedData.targetId, function(e){
//console.log('reach goal callback: ', e);
});
}catch(ex)
{
console.warn('reach goal exception: ', ex);
}
}else{
console.log("ya meter '" + wProp + "' was not found");
}
}
}
}
} else {
// The data hasn't been sent from iframe, do not use it
return;
}
});
}
addListner(host);
//BLOCK BELOW ALLOWS YOU TO NAVIGATE TO SIGN IN PAGES INSIDE IFRAME USING PARENT PAGE
//URL PARAMS. I.E. url ...ru/index.html?cabinet=agent -> forces iframe to start with
//auth_agent.html page.
//get param returner
$.urlParam = function(name, path){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(path ? path : window.location.href);
if (results && results.length > 1)
return results[1];
else
return null;
};
var iframeSrcCabinetParam = null;
var iframeSrcCabinetCred = null;
var cabinetName = $.urlParam('cabinet');
switch (cabinetName)
{
case "client" : {
//user email
var clientAuthData = {
userEmail: $.urlParam('ue'),
letNumber: $.urlParam('ln')
};
if (clientAuthData.userEmail && clientAuthData.letNumber) {
iframeSrcCabinetCred = "&ue=" + clientAuthData.userEmail + "&ln=" + clientAuthData.letNumber;
}
}
case "agent" :
case "object" : {
//remove parameter from location
var l = window.location.href.split("?cabinet")[0];
window.history.pushState("", "", l);
iframeSrcCabinetParam = cabinetName;
break;
}
}
// определяет в каком режиме грузится ли форма в виде виджета
// по параметру &step=widget
var isWidgetMode = false;
var iframeSrcStepParam = $.urlParam('step',"&objid=824&step=step2");
if (iframeSrcStepParam === 'widget')
isWidgetMode = true;
var userUrlParams = window.location.search.substr(1);
userUrlParams = userUrlParams ? '&' + userUrlParams : "";
console.log('userUrlParams', userUrlParams);
// MAIN IFRAME
var IFRAME_ID = 'ihbooking-iframe-uuid';
//var IFRAME_ID = getUniqueId('ihbooking-iframe');
var frameSrc = host + "/#/?key=f0341f67bf1a233670467d0bc397e99e&objid=824&step=step2&parentdomain=" + parentPageDomain + userUrlParams;
if (iframeSrcCabinetParam)
{
frameSrc = host + "/#/?key=f0341f67bf1a233670467d0bc397e99e&parentdomain=" + parentPageDomain + "&objid=824&step=step2" + userUrlParams;
var targReg = /step=[^&]*/i;
var foundRes = frameSrc.match(targReg);
if (foundRes && targReg.length > 0) {
frameSrc = frameSrc.replace(targReg, 'step='+ iframeSrcCabinetParam);
} else {
frameSrc += "&step=" + iframeSrcCabinetParam;
}
if (iframeSrcCabinetCred) {
frameSrc += iframeSrcCabinetCred;
}
}
var frm = ih("