//needs to show Edit Node popup box
function showEditNodeDialog(pageId, pageTitle, width, height) {
  pageTitle = "[" + String(pageTitle ? pageTitle : pageId) + "]";
  width = width && Number(width) > 0 ? width : 980;
  height = height && Number(hei) > 0 ? height : 720;
  UmbClientMgr.openModalWindow('/umbraco/editContent.aspx?id=' + pageId, pageTitle + ' Page Editing', true, width, height);
};


function showSearchResult(url, keyFldId) {
  var v = URLEncode(jQuery("#" + keyFldId).val());
  window.location = url + "?search=" + v;
}



function submitByEnter(event, resUrl, controls, methodName) {
  if (event.keyCode == 13) {
    GenerateSubmitForm(resUrl, controls, methodName);
    event.preventDefault();
  }
}


function GenerateSubmitForm(resUrl, controls, methodName) {
  methodName = methodName ? methodName : "post";
  var frm = jQuery("<div style='display:none; border:1px solid transparent;'><form action=\"" + resUrl + "\" method=\"" + methodName + "\"><input type=\"submit\" value=\"submit\" class=\"submitybttn\" name=\"_submit\"/></form></div>");
  frm.appendTo(jQuery(document.body));
  frm = jQuery(frm.find("form")[0]);
  var btn = frm.find(".submitybttn")[0];
  ///generate controls
  if (controls) {
    var i = 0;
    while (i <= controls.length - 1) {
      var cname = controls[i];
      var cselector;
      if (typeof (cname) == 'object') {
        cname = controls[i].name;
        cselector = controls[i].selector;
      }
      AddInputElements(frm, cname, cselector);
      i++;
    }
    RemoveTagsFromAllChilds(frm);
    frm[0].submit();
  } else return frm;
}

function SubmitForm(url, parentSelector, methodname) {
  var frm = GenerateSubmitForm(url, false, methodname);
  var parent = jQuery(parentSelector);
  var els = parent.find("input");
  els.each(function (pos, el) {
    AddpendInput(frm, el);
  });
  RemoveTagsFromAllChilds(frm);
  frm[0].submit();
}


function AddpendInput(frm, cel) {
  cel = jQuery(cel);
  var elname = cel.attr('name');
  if (cel.attr('type') != 'radio' || cel[0].checked) {
    var el = jQuery("<input type=\"text\" name=\"" + elname + "\" id=\"" + elname + "\"/>");
    el.appendTo(frm);
    var sval = cel.attr("watermark");
    if (sval && String(sval).length > 0 && cel.val() == sval) sval = "";
    else sval = cel.val();
    el.val(sval);
  }
}
function AddInputElements(frm, elname, elselector) {
  elselector = elselector ? elselector : "#" + elname;
  var sourceEl = $(elselector);
  var el = jQuery("<input type=\"text\" name=\"" + elname + "\" id=\"" + elname + "\"/>");
  el.appendTo(frm);
  var sval = sourceEl.attr("watermark");
  if (sval && String(sval).length > 0 && sourceEl.val() == sval) sval = "";
  else sval = sourceEl.val();
  el.val(sval);
}


function URLEncode(c) {
  var o = ''; var x = 0; c = c.toString(); var r = /(^[a-zA-Z0-9_.]*)/;
  while (x < c.length) {
    var m = r.exec(c.substr(x));
    if (m != null && m.length > 1 && m[1] != '') {
      o += m[1]; x += m[1].length;
    } else {
      if (c[x] == ' ') o += '+'; else {
        var d = c.charCodeAt(x); var h = d.toString(16);
        o += '%' + (h.length < 2 ? '0' : '') + h.toUpperCase();
      } x++;
    }
  } return o;
}

function URLDecode(s) {
  var o = s; var binVal, t; var r = /(%[^%]{2})/;
  while ((m = r.exec(o)) != null && m.length > 1 && m[1] != '') {
    b = parseInt(m[1].substr(1), 16);
    t = String.fromCharCode(b); o = o.replace(m[1], t);
  } return o;
}


function RemoveTagsOnSubmit(frmel) {

  var frms = frmel && String(frmel).length > 0 ? frmel : $(document.body).find("form");
  frms.each(function () {
    var $frm = $(this);
    $frm.submit(function () {
      RemoveTagsFromAllChilds($frm);
    });
  });
}

function RemoveTagsFromAllChilds(mainEl) {
  mainEl.find("input:not(.dontdeletetags)").each(function () {
    var el = $(this);
    if (el.attr("name") && el.attr("name").indexOf("_") != 0) {
      var elval = String(el.val());
      var resval = elval ? elval.replace(new RegExp("<", "g"), "&lt;").replace(new RegExp(">", "g"), "&gt;") : "";
      el.val(resval);
    }
  });
  mainEl.find("textarea:not(.dontdeletetags)").each(function () {
    var el = $(this);
    if (el.attr("name") && el.attr("name").indexOf("_") != 0) {
      var elval = String(el.val());
      var resval = elval ? elval.replace(new RegExp("<", "g"), "&lt;").replace(new RegExp(">", "g"), "&gt;") : "";
      el.val(resval);
    }
  });
}


(function ($) {
  $.fn.watermark = function (css, text) {
    return this.each(function () {
      var i = $(this), w;
      i.focus(function () {
        w && !(w = 0) && i.removeClass(css).data('w', 0).val('');
      })
      .blur(function () {
        !i.val() && (w = 1) && i.addClass(css).data('w', 1).val(text);
      })
      //      .closest('form').submit(function () {
      //          w && i.val('');
      //      });
      i.blur();
    });
  };
  $.fn.removeWatermark = function () {
    return this.each(function () {
      $(this).data('w') && $(this).val('');
    });
  };
})(jQuery);



$(document).ready(function () {
  RemoveTagsOnSubmit();
});

function initComments(formselector, commentsselector, iscanvas) {
  var delegate = function () {
    $.CommentsFormManager(formselector, iscanvas);
    $.CommentsManager(commentsselector, iscanvas);
  };
  ExecuteDelegate(function () { return typeof ($.CommentsFormManager) == 'function'; }, delegate);
};

function ExecuteDelegate(checkrule, delegate) {
  if (checkrule.call()) delegate.call();
  else {
    setTimeout(function () { ExecuteDelegate(checkrule, delegate); }, 100);
  }
}





/* -        -      - SearchTerrassen - - -  - - - - - - - - - - - - - - - - - -- */
var serviceSearchInterval = 0;
var resulturl = "";
function SearchTerrassen(event, resUrl, controls, methodName, serviceurl, containerSel) {
  if (event.keyCode != 13) {
    resulturl = resUrl;
    var random13 = getRandomNumber(13);
    var query = encodeURIComponent($("." + controls[0]).val());
    serviceurl = serviceurl ? serviceurl : "http://service.zonneradar.nl/PublicServiceJson.svc/search/?q=" + query + "&ac=" + random13 + "&m=SearchTerrasenFinished";
    $(containerSel).html();
    clearTimeout(serviceSearchInterval);
    if (query.length > 0) {
      serviceSearchInterval = setTimeout(function () {
        var scrpt = document.createElement("script");
        scrpt.type = "text/javascript";
        scrpt.src = serviceurl;
        $(containerSel)[0].appendChild(scrpt);
      }, 200);
    };
  }
}
function SearchTerrasenFinished(data) {
  var holder = $(".search-holder");
  var container = holder.find(".terrasensearhcresult");
  container.remove();
  container = $("<div class=\"searchResult terrasensearhcresult\" style=\"display:none;\"/>");
  container.appendTo(holder);
  var ul = $("<ul class=\"item\"></ul>");
  ul.appendTo(container);
  if (data.Value.Terraces.length < 1) container.remove();
  else container.fadeIn();
  $(data.Value.Terraces).each(function (pos, terr) {
    var liurl = resulturl + "?terraceid=" + String(terr.TerraceId);
    var ImageUrl = "http://www.zonneradar.nl/images/terrassen/" + String(terr.ImageUrl) + "_lo.jpg";
    var description = "<br/>" + terr.Street + "<br/>" + terr.Zipcode + " " + terr.City + "";
    var li = $("<li></li>");
    li.appendTo(ul);
    li.click(function () {
      container.fadeOut();
      var frm = GenerateSubmitForm(resulturl, false, "get");
      var els = li.find("input");
      els.each(function (pos, el) {
        AddpendInput(frm, el);
      });
      RemoveTagsFromAllChilds(frm);
      frm[0].submit();
    });
    li.append("<input type=\"hidden\" name=\"terraceid\" value=\"" + String(terr.TerraceId) + "\"/>");
    li.append("<a href=\"" + liurl + "\" onclick=\"return false;\"><img src=\"" + ImageUrl + "\" alt=\"" + terr.Name + "\" style=\"width:60px;\"/><span><b>" + terr.Name + "</b>" + description + "</span></a>");
  });
}
function RenderSelTerraceInfo(placeSelection, objToShow) {
  var container = $(placeSelection);
  container.fadeIn();
  data = objToShow.Value;
  //title
  container.find(".terraceTitle").text(String(data.Name));
  Cufon.replace('.terraceTitle', { fontFamily: 'Helvetica Neue Md', hover: true });
  //time-date
  container.find(".terraceTime").html("" + data.City + ",&nbsp;" + data.Street + ",&nbsp;" + data.Zipcode);
  //description
  container.find(".terraceDescription").html(data.PromoText);

  //image    
  if (data.ImageUrl && String(data.ImageUrl).length > 0)
    container.find(".terraceImage").attr("src", "http://www.zonneradar.nl/images/terrassen/" + String(data.ImageUrl) + "_med.jpg");

};
function getRandomNumber(numdig) {
  var r = Math.random();
  return Math.ceil(r * 1000000000000);
}

jQuery.cookie = function (name, value, options) {
  if (typeof value != 'undefined') { // name and value given, set cookie
    options = options || {};
    if (value === null) { value = ''; options.expires = -1; }
    var expires = '';
    if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
      var date;
      if (typeof options.expires == 'number') { date = new Date(); date.setTime(date.getTime() + (options.expires * 60 * 60 * 1000)); }
      else { date = options.expires; }
      expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
    }
    var path = options.path ? '; path=' + (options.path) : '';
    var domain = options.domain ? '; domain=' + (options.domain) : '';
    var secure = options.secure ? '; secure' : '';
    document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
  } else {
    var cookieValue = null;
    if (document.cookie && document.cookie != '') {
      var cookies = document.cookie.split(';');
      for (var i = 0; i < cookies.length; i++) {
        var cookie = jQuery.trim(cookies[i]);
        if (cookie.substring(0, name.length + 1) == (name + '=')) {
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
          break;
        }
      }
    }
    return cookieValue;
  }
};
function GetVisitorLocation(methodToExecute) {
  var obj = {};
  obj.latitude = jQuery.cookie('cl_lat');
  obj.longitude = jQuery.cookie('cl_lng');
  if (obj.latitude && obj.longitude && String(obj.latitude).length > 0 && String(obj.longitude).length > 0) {
    if (typeof (methodToExecute) == "function") methodToExecute(obj);
  } else {
    UpdateVisitorLocation(methodToExecute);
  };
};

var onlocationservicecompletecallback = null;
function UpdateVisitorLocation(onCompleteMethod)
{
//  if (google && typeof (google.load) == "function") {
//    google.load("maps", "2", {
//      callback: function () {
//        var obj = google.loader.ClientLocation;
//        if (!obj || obj==null || typeof(obj=="undefined") {
//          obj = { latitude: ip2location_latitude(), longitude: ip2location_longitude() };
//          obj.latitude =  obj.latitude  ? obj.latitude  : 52.290339;
//          obj.longitude = obj.longitude ? obj.longitude : 5.293579;
//        };
//        jQuery.cookie('cl_lat', obj.latitude, { expires: 1, path: '/' });
//        jQuery.cookie('cl_lng', obj.longitude, { expires: 1, path: '/' });
//        if (typeof (methodToExecute) == "function") methodToExecute(obj);
//      }
//    });
//  } else {
//    setTimeout(function () { UpdateVisitorLocation(onCompleteMethod); }, 100);
    //  };
    onlocationservicecompletecallback = onCompleteMethod;
    $(".checkVisitorLocationScript").attr("src", "http://api.ipinfodb.com/v3/ip-city/?key=" + window.currentLocationApiKey + "&ip=" + window.currentVisitorIP + "&format=json&callback=UpdateVisitorLocationCallBack&r=" + getRandomNumber(11));    
}
function UpdateVisitorLocationCallBack(data) {
    RefreshVisitorLocation(data, onlocationservicecompletecallback);
}

function RefreshVisitorLocation(data, methodToExecute) {
    var obj = {};
    obj.latitude = data.latitude;
    obj.longitude = data.longitude;
    jQuery.cookie('cl_lat', obj.latitude, { expires: 1, path: '/' });
    jQuery.cookie('cl_lng', obj.longitude, { expires: 1, path: '/' });
    if (typeof (methodToExecute) == "function") methodToExecute(obj);
}
var onweatherservicecompletecallback = null;
function UpdateVisitorWeather(OnCompleteCallBack) {
  GetVisitorLocation(function (location) {
    var obj = { Value: {} };
    obj.Value.DayOrNight = jQuery.cookie('cl_don');
    obj.Value.temperature = jQuery.cookie('cl_temp');
    obj.Value.icon = jQuery.cookie('cl_icn');
    if (obj.Value.DayOrNight && obj.Value.temperature && obj.Value.icon && (!isNaN(obj.Value.DayOrNight)) && (!isNaN(obj.Value.temperature)) && (!isNaN(obj.Value.icon))) {
      obj.Value.DayOrNight = obj.Value.DayOrNight == "0" ? true : false;
      if (typeof (OnCompleteCallBack) == "function") {
        OnCompleteCallBack(obj);
      };
    } else {
      onweatherservicecompletecallback = OnCompleteCallBack;
      var curl = "http://service.zonneradar.nl/PublicServiceJson.svc/Initialize/?neLat=##lat##&neLon=##lng##&swLat=##lat##&swLon=##lng##&m=ProcessServiceInfo&ac=";
      curl = curl + Math.ceil(Math.random() * 1000000000000);
      AppendWeatherScript(curl, location, $(".weathercontainer")[0]);
    };
  });
};

function ProcessServiceInfo(data) {
  onweatherservicecompletecallback(data);
};

