var ticketingMssgAlert = "This event requires a ticket. Adding this to your schedule does not guarantee a ticket to this event. Please view the event details for more information on how to obtain a ticket.";

function clickButton(e, buttonid) {
    var evt = e ? e : window.event;
    var bt = document.getElementById(buttonid);
    if (bt) {
        if (evt.keyCode == 13) {
            bt.click();
            return false;
        }
    }
}

function stripHTMLTags(s) {
    var strInputCode = s;
    /* 
    This line is optional, it replaces escaped brackets with real ones, 
    i.e. < is replaced with < and > is replaced with >
    */
    strInputCode = strInputCode.replace(/&(lt|gt);/g, function(strMatch, p1) {
        return (p1 == "lt") ? "<" : ">";
    });
    var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");

    return s;
}

function replaceDiacritics(s) {
    var s;
    var diacritics = [
        /[\300-\306]/g, /[\340-\346]/g,  // A, a 
        /[\310-\313]/g, /[\350-\353]/g,  // E, e 
        /[\314-\317]/g, /[\354-\357]/g,  // I, i 
        /[\322-\330]/g, /[\362-\370]/g,  // O, o 
        /[\331-\334]/g, /[\371-\374]/g,  // U, u 
        /[\321]/g, /[\361]/g, // N, n 
        /[\307]/g, /[\347]/g, // C, c 
    ];

    var chars = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c'];

    for (var i = 0; i < diacritics.length; i++) {
        s = s.replace(diacritics[i], chars[i]);
    }

    return s;
}

function replaceSafariChrs(s) {
    var s;
    var specialChrs = [
        /[\54]/g, /[\140]/g, // ",", "`"
		/[\241]/g, /[\277]/g, // ¡, ¿        
		/[…]/g
    ];

    for (var i = 0; i < specialChrs.length; i++) {
        s = s.replace(specialChrs[i], '');
    }

    return s;
}

function setCookie(sName, EventID, turl, totalClientID, cartClientID) {

    //alert('EventID: ' + EventID);
    //alert('Cookie value before update: ' + GetCookieValue());
  
    // check for Safari to strip out diacritics
    var saf = (navigator.userAgent.indexOf('Safari') != -1);
    if (saf) {
        EventID = replaceSafariChrs(replaceDiacritics(EventID));
    } 
    
    var expires = 30;
    var newVal = false;
    var cValue = GetCookieValue();
    var today = new Date();
    today.setTime(today.getTime());
    var aCookie = GetCookieValue(); 
        
    //  if EventID is in cookie do not add it
    if (expires) {
        expires = expires * 1000 * 60 * 60 * 24;
    }

    var expires_date = new Date(today.getTime() + (expires));
    var path = "/"

    if (aCookie != null) {
        var aC = aCookie.split("~");

        for (var i = 0; i < aC.length; i++) {
            if (aC[i] == EventID) {
                //do not set EventID in cookie
                newVal = true;
                break;
            }
        }

        if (newVal == false) {
            if ((cValue == null) || (cValue == 'undefined') || (cValue == '')) {
                document.cookie = sName + "=" + EventID + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "");
            }
            else {
                document.cookie = sName + "=" + cValue + '~' + EventID + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "");
            }

            if (turl == 'True') {
                alert(ticketingMssgAlert);
            }
        }

    }

    else {
        if ((cValue == null) || (cValue == 'undefined') || (cValue == '')) {
            document.cookie = sName + "=" + EventID + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "");
        }
        else {
            document.cookie = sName + "=" + cValue + '~' + EventID + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "");
        }

        if (turl == 'True') {
            alert(ticketingMssgAlert);
        }

    }
    
    AddEventToMyScheduleBox();

}

function AddEventToMyScheduleBox(tcID, ccID) {
    // add titles and count of events to the 'My Schedule' box
    var tcID = 'totalItems';
    var ccID = 'cartList';
    var totalItemsID = document.getElementById(tcID);
    var cartListID = document.getElementById(ccID);

    var aCookie = GetCookieValue();
    var cartList = '';

    if (aCookie != null) {       
        var aC = aCookie.split("~");
        //alert(aC);
        for (var i = 0; i < aC.length; i++) {
            var aEvt = aC[i].split("__");
            var addToScheduleID = aEvt[1] + aEvt[0].replace(/ /g, '');
            if (addToScheduleID.indexOf("undefined") == -1) {
                var addToScheduelLink = document.getElementById(addToScheduleID);
                if (addToScheduelLink != null) {
                    addToScheduelLink.removeAttribute('href');
                }
                cartList = cartList + '<li><a href="#">' + aEvt[2] + '</a> <em><a href="javascript: del_event(\'ckschedule\', \'' + aEvt[0] + '__' + aEvt[1] + '__' + aEvt[2].replace(/'/g, "\\'") + '\'); document.forms[1].submit();">X</a></em></li>';
                if (totalItemsID != null) {
                    totalItemsID.innerHTML = 'Total Items: ' + aC.length;
                }
            } else {
                if (totalItemsID != null) {
                    totalItemsID.innerHTML = 'Total Items: 0';
                }
            }
        }

        if (cartListID != null) {
            cartListID.innerHTML = cartList;
        }

    } else {
        if (totalItemsID != null) {
            totalItemsID.innerHTML = 'Total Items: 0';
        }
    }
}

function GetCookieValue() {
    // cookies are separated by semicolons
    var aCookie = document.cookie.split("; ");
    for (var i = 0; i < aCookie.length; i++) {
        // a name/value pair (a crumb) is separated by an equal sign
        var aCrumb = aCookie[i].split("=");
        if (aCrumb[0] == 'ckschedule')
            return unescape(aCrumb[1]);
    }

    // a cookie with the requested name does not exist

    return null;

}

function del_cookie(sName) {
    document.cookie = sName +
'=; expires=Sun, 26-Apr-1981 00:00:01 GMT;';

}

function del_event(sName, EventID) {

    // check for Safari to strip out diacritics
    var saf = (navigator.userAgent.indexOf('Safari') != -1);
    if (saf) {
        EventID = replaceSafariChrs(replaceDiacritics(EventID));
    }
    
    //place in string array
    var aCookie = GetCookieValue();
    var path = "/"

    //alert(EventID);
    if (aCookie != null) {
        var aC = aCookie.split("~");

        for (var i = 0; i < aC.length; i++) {
            if (aC[i] == EventID) {
                //do not set EventID in cookie        
                aC[i] = '-1';
                break;
            }
        }
        var newVal = '';
        for (var i = 0; i < aC.length; i++) {
            if (String(aC[i]) != '-1') {

                if (newVal == '') {
                    newVal = aC[i];
                }
                else {
                    newVal = newVal + '~' + aC[i];
                }

            }
        }
        document.cookie = sName + "=" + newVal + ";path=" + path;

    }
}

function addRow(jQtable, item) {
    var aCookie = GetCookieValue();
    var x = item;
    var y = "";

    if ((aCookie != null) || (aCookie != 'undefined') || (aCookie != '')) {

        var aC = aCookie.split(",");

        for (var i = 0; i < aC.length; i++) {
            var aCVals = aC[i].split("__")
            if (x == aCVals[1]) {
                y = aCVals[2];
                document.getElementById(aCVals[1] + "_1").style.display = "none";
                document.getElementById(aCVals[1] + "_2").style.display = "inline";
            }

        }
    }

    $(document).ready(function() {
        var temp = '<div id="temp" style="position:relative">Add to Schedule</div>';
        $("a#Item" + x).click(function() {

            $("div#temp").remove();

            var destHeight = document.getElementById("postit").offsetHeight;
            var destWidth = document.getElementById("postit").offsetWidth;
            destWidth = (destWidth / 4) * 3;

            var destTop = 0;
            var destLeft = 0;
            tempEl = document.getElementById("postit");
            while (tempEl) {
                destLeft += tempEl.offsetLeft;
                destTop += tempEl.offsetTop;
                tempEl = tempEl.offsetParent;
            }

            var srcLeft = 0;
            var srcTop = 0;
            tempEl = document.getElementById(x + "2");
            while (tempEl) {
                srcLeft += tempEl.offsetLeft;
                srcTop += tempEl.offsetTop;
                tempEl = tempEl.offsetParent;
            }

            $("div#" + x + "2").append(temp);
            $("div#temp").animate({ left: (destLeft - srcLeft + destWidth) + "px", top: (destTop - srcTop - destHeight) + "px", opacity: "toggle" }, 2000);
        });
    });

    setTimeout(function() {
        jQtable.each(function() {
            var $list = $(this);
            var listContent = '<li id="selectedEvent' + x + '">';
            listContent += '<a href="#">' + y + '</a><em><a href="#" id="delete' + x + '" onclick="del_event(\'ckschedule\',' + x + ',$(\'#cartList\'));">X</a></em></li>';
            $(this).append(listContent);
            $("h2#totalItems").html("Total Items " + $('#cartList li').length);
        });
    }, 3000);

    setCookie('ckschedule', x);
}

function getEvents(jQtable) {
    var aCookie = GetCookieValue();
    var y = "";
    if ((aCookie == null) || (aCookie == 'undefined') || (aCookie == '')) {
        $("h2#totalItems").html("Total Items 0");
    }
    else {
        var aC = aCookie.split(",");
        for (var i = 0; i < aC.length; i++) {
            var aCVals = aC[i].split("__")
            y = aCVals[2]

            //document.getElementById(aCVals[1]+"_1").style.display="none";
            //document.getElementById(aCVals[1]+"_2").style.display="inline";

            jQtable.each(function() {
                var $list = $(this);
                var listContent = '<li id="selectedEvent1">';
                listContent += '<a href="#">' + y + '</a><em><a href="#" id="delete1" onclick="del_event(\'ckschedule\',\'1\',$(\'#cartList\'));">X</a></em></li>';
                $(this).append(listContent);
            });

        }
        $("h2#totalItems").html("Total items " + aC.length);
    }
}
