
/*<html>
<body>
<script type="text/javascript" >
*/

(function() {
var PREFIX = "zocdoc_";
var baseUrl = 'http://offsiteschedule.zocdoc.com';
var selectedLocationId = 0;
var autoPopupToken = 'showZocDocAppointment=true';
var timeSlotGone = 'timeSlotGone=true';

attachEventListener(window, 'load', fix_flash, false);
if(true)
{
var anchor = document.getElementById('zocdoc_schedule');
if(anchor) //then the script was declared after the link
{
placeBookNowButton();
}
else //older versions declare the script before the link. so they wouldnt be aware of it yet.
{
attachEventListener(window, 'load', placeBookNowButton, false);
}
if(window.location.toString().indexOf(autoPopupToken) > -1){
attachEventListener(window, 'load', ShowZocDocCalendar, false);
}
attachEventListener(window, 'load', attachOtherListeners, false);
}
//else do no alter the zocdoc_schedule item

function attachEventListener(target, eventType, functionRef, capture) {
if(typeof(functionRef)== 'string') {
functionRef=eval(functionRef);
}
if (typeof target.addEventListener != "undefined"){
target.addEventListener(eventType, functionRef, capture);
} else if (typeof target.attachEvent != "undefined"){
target.attachEvent("on" + eventType, functionRef);
} else {
eventType = "on" + eventType;
if(typeof target[eventType] == "function") {
var oldListener = target[eventType];
target[eventType] = function() {
oldListener();
return functionRef();
};
}else {
target[eventType] = functionRef;
}
}
}
function attachOtherListeners(){
//attach listeners to any link with the class 'ShowZocDocCalendar'
var anchors = document.getElementsByTagName('a');
for(var i=0; i<anchors.length; i++)
{
if(anchors[i].className.toLowerCase().indexOf('showzocdoccalendar') > -1)
{
attachEventListener(anchors[i], 'click', ShowZocDocCalendar, false);
}
}
}
function placeBookNowButton()
{
var anchor = document.getElementById('zocdoc_schedule');
if(anchor)
{

var button = document.createElement('a');
button.setAttribute('href','#');
button.setAttribute('style', 'display: block');
button.innerHTML = '<img id="' + PREFIX + 'bookNow" src="' + baseUrl + '/images/remote/bookAnAppointmentOrange.gif" style="border:0px;" />';
anchor.parentNode.replaceChild(button, anchor);
//now register the click event
attachEventListener(button, 'click', ShowZocDocCalendar, false);

}
}

function close()
{

var newUrl = window.location.href.replace(autoPopupToken,'').replace(timeSlotGone,'').replace(timeSlotGone.toLowerCase(),'');
if (newUrl.substr(newUrl.length - 1, 1) == '?') {
newUrl = newUrl.substring(0, newUrl.length - 1);
}
if (newUrl.substr(newUrl.length - 1, 1) == '&') {
newUrl = newUrl.substring(0, newUrl.length - 1);
}
if (newUrl != window.location.href){
window.location = newUrl;
}
else{
window.location.reload();
}

}
function ShowZocDocCalendar(evt) {

if (evt.preventDefault)
{
evt.preventDefault();
}
else
{
evt.returnValue = false;
}

scroll(0, 0); //focus at the top, where the popup is

var headElm = document.getElementsByTagName('head')[0];
//stylesheets
var styleElm = document.createElement('link');
styleElm.rel = 'stylesheet';
styleElm.type = 'text/css';
styleElm.href = baseUrl + '/remote/Schedule2.css.aspx?prefix=' + PREFIX;
if(headElm.childNodes.length == 0)
headElm.appendChild(styleElm);
else
headElm.insertBefore(styleElm, headElm.childNodes[0]);
/*@cc_on
var ie6StyleElm = document.createElement('link');
ie6StyleElm.rel = 'stylesheet';
ie6StyleElm.type = 'text/css';
ie6StyleElm.href = baseUrl + '/remote/Schedule2_ie6.css.aspx?prefix=' + PREFIX;
if(headElm.lastChild == styleElm) {
headElm.appendChild(ie6StyleElm);
} else {
headElm.insertBefore(ie6StyleElm, headElm.childNodes[1]);
}
@*/
//add iframe to the body, so that it is not restricted by the position or size of the XSS container
var body = document.getElementsByTagName('body')[0];
if(body)
{
//wrap in popup
var popupContainer = document.createElement('div');
var referrerParam = '';
if(document.referrer) {
referrerParam = '&widgetReferrer='+encodeURIComponent(document.referrer);
}

var closeLinkUrl = window.location.href.replace(autoPopupToken,'').replace(timeSlotGone, '').replace(timeSlotGone.toLowerCase(),'');
if (closeLinkUrl.substr(closeLinkUrl.length - 1, 1) == '?') {
closeLinkUrl = closeLinkUrl.substring(0, closeLinkUrl.length - 1);
}
if (closeLinkUrl.substr(closeLinkUrl.length - 1, 1) == '&') {
closeLinkUrl = closeLinkUrl.substring(0, closeLinkUrl.length - 1);
}
popupContainer.innerHTML = '<div id="' + PREFIX + 'noAppointmentsPopupOverlay" class="' + PREFIX + 'modalOverlay" >&nbsp;</div>\
<div id="' + PREFIX + 'noAppointmentsPopupParentContainer" class="modalContainer" style="position: absolute; z-index: 3100; display: block;width:737px">\
<div>\
<div id="' + PREFIX + 'noAppointmentsPopupContainer">\
<a href="' + closeLinkUrl + '" id="' + PREFIX + 'closeButton" title="close" style="position:absolute; top:10px;right:30px;cursor:pointer;border:0px;">\
<img src="' + baseUrl + '/images/welcomePopup/welcome_x.gif" title="close" alt="close" style="border:0px;"/>\
</a>\
<iframe src="' +baseUrl + '/remote/schedulePopup.aspx?professionalId=' + referrerParam + '&providerId=1670&locationId=" width="717px" height="520px" scrolling="yes" frameborder="0" />\
</div>\
</div>\
</div>';
body.appendChild(popupContainer)
attachEventListener(document.getElementById( PREFIX + 'closeButton'), 'click', close, false);
//correct the overlay for ie6

}
}
})();
function fix_flash() {
// loop through every embed tag on the site
var embeds = document.getElementsByTagName('embed');
for(i=0; i<embeds.length; i++) {
embed = embeds[i];
var new_embed;
// everything but Firefox & Konqueror
if(embed.outerHTML) {
var html = embed.outerHTML;
// replace an existing wmode parameter
if(html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i,"wmode='transparent'");
// add a new wmode parameter
else
new_embed = html.replace(/<embed\s/i,"<embed wmode='transparent' ");
// replace the old embed object with the fixed version
embed.insertAdjacentHTML('beforeBegin',new_embed);
embed.parentNode.removeChild(embed);
} else {
// cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
new_embed = embed.cloneNode(true);
if(!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase()=='window')
new_embed.setAttribute('wmode','transparent');
embed.parentNode.replaceChild(new_embed,embed);
}
}
// loop through every object tag on the site
var objects = document.getElementsByTagName('object');
for(i=0; i<objects.length; i++) {
object = objects[i];
var new_object;
// everything but Firefox & Konqueror
if(object.outerHTML) {
var html = object.outerHTML;
// replace an existing wmode parameter
if(html.match(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")[a-zA-Z]+('|")\s*\/?\>/i))
new_object = html.replace(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")window('|")\s*\/?\>/i,"<param name='wmode' value='transparent' />");
// add a new wmode parameter
else
new_object = html.replace(/<\/object\>/i,"<param name='wmode' value='transparent' />\n</object>");
// loop through each of the param tags
var children = object.childNodes;
for(j=0; j<children.length; j++) {
if(children[j].getAttribute && children[j].getAttribute('name') && children[j].getAttribute('name').match(/flashvars/i)) {
new_object = html.replace(/<param\s+name\s*=\s*('|")flashvars('|")\s+value\s*=\s*('|")[^'"]*('|")\s*\/?\>/i,"<param name='flashvars' value='"+children[j].getAttribute('value')+"' />");
}
}
// replace the old embed object with the fixed versiony
object.insertAdjacentHTML('beforeBegin',new_object);
object.parentNode.removeChild(object);
} else {
// cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
new_object = object.cloneNode(true);
// loop through each of the param tags
var children = object.childNodes;
var foundwmode = false;
for(j=0; j<children.length; j++) {
if(children[j].getAttribute && children[j].getAttribute('name') && children[j].getAttribute('name').match(/wmode/i)) {
children[j].setAttribute('value','transparent');
foundwmode = true;
}
}
if( !foundwmode ) {
var param = document.createElement('param');
param.setAttribute('name','wmode');
param.setAttribute('value','transparent');
new_object.appendChild(param);
}
object.parentNode.replaceChild(new_object,object);
}
}
}

