/*=========================================================*/

function collapseBox() {
    $(".collapseBox").each(function() {
        var boxElm = $(this).get(0);
        // Check to see if this box has already been parsed
        if (jQuery.data(boxElm, "ParsedBox") != true) {
            // Not already parsed - add handlers
            if ($(this).hasClass("open")) {
                $(this).addClass("expOpen");
                $(this).children("div").eq(0).show();
            }
            // Add click binding
            $(this).children().eq(0).bind("click", function(event) {
                toggleChildBox($(this).parent(), event);
            });
            // Add to tab order
            $(this).children().eq(0).attr("tabindex", "0");
            // Add keypress binding
            $(this).children().eq(0).bind("keyup", function(event) {
                var code=event.charCode || event.keyCode;
    		    if(code && code == 13) {// if enter is pressed
                    toggleChildBox($(this).parent(), event);
                }
            });
        }
        // Set parsed flag
        jQuery.data(boxElm, "ParsedBox", true);
    });
}

function toggleChildBox(n, e) {
    $(n).toggleClass("expOpen");
    if ($(n).hasClass("expOpen")) {
        $(n).children("div").eq(0).slideDown();
    } else {
        $(n).children("div").eq(0).slideUp();
    }
    e.stopPropagation();
}

/*=========================================================*/

function bookListExpand() {
    $(".bookBox").each(function() {
        $(this).addClass("expOpen");
        $(this).children("div").eq(0).show();
    });
}

function bookListCollapse() {
    $(".bookBox").each(function() {
        $(this).removeClass("expOpen");
        $(this).children("div").eq(0).hide();
    });
}

/*=========================================================*/

function popupBind() {
    $(".jqPopup").each(function() {
        // Check parsed flag
        if (jQuery.data($(this), "ParsedPopup") != true) {
            $(this).bind("click", function(event) {
                return popupWin($(this), event);
            });
            // Set parsed flag
            jQuery.data($(this), "ParsedPopup", true);
        }
    });
}

function popupWin(n, e) {
    // n -> DOM node
    // e -> DOM Event

    var rel = $(n).attr('rel');
    var relSplit = rel.split(" ");

    var myTarget = relSplit[0];
    var myOrientation = relSplit[1];
    var myHref = $(n).attr('href');

    // Set override properties and width/height
    switch(myTarget) {
        case 'voices': {
            var winWidth = "650";
            var winHeight = "500";
            break;
        }
        case 'videos': {
            var winWidth = "650";
            var winHeight = "500";
            break;
        }
        case 'view': {
            if (myOrientation == "landscape") {
                var winWidth = "780";
                var winHeight = "600";
            } else {
                var winWidth = "595";
                var winHeight = "695";
            }
            break;
        }
        case 'model': {
            if (myOrientation =="landscape") {
                 var winWidth = "995";
                var winHeight = "600";
            } else {
                var winWidth = "815";
                var winHeight = "695";
            }
            break;
        }
        case 'glossary': {
            var winWidth = "520";
            var winHeight = "500";
            break;
        }
        case 'something': {
            var winWidth = "885";
            var winHeight = "560";
            break;
        }

        default: {
            var winWidth = "400";       // Pixels (px)
            var winHeight = "400";      // Pixels (px)
        }
    }

    var windowXY = popupWindowCenter(winWidth, winHeight);
    var winPop = open(myHref, myTarget, windowXY + ',scrollbars=yes,resizable=yes');
    if (!winPop.opener) winPop.opener = self;
    winPop.focus();

    if (e != null) { e.stopPropagation(); }
    return false;
}

function popupWindowCenter(winWidth, winHeight) {
    // Target the window to open in the center of the screen
    var screenWidth = screen.width;
    var screenHeight = screen.height;

    var windowX = (screenHeight - winHeight) / 2;
    var windowY = (screenWidth - winWidth) / 2;

    centerString = "width=" + winWidth + ",height=" + winHeight + ",top=" + windowX + ",left=" + windowY;

    return centerString;
}

function doPageEditJump(fid) {
    // Get new pagenum
    var pageNew = parseInt(document.getElementById(fid+'_New').value);
    var pageCur = parseInt(document.getElementById(fid+'_Cur').value);
    var pageMax = parseInt(document.getElementById(fid+'_Max').value);
    var pageBid = parseInt(document.getElementById(fid+'_Bid').value);

    // Check boundaries
    if (pageNew < 1) { pageNew = 1; }
    if (pageNew > pageMax) { pageNew = pageMax; }

    // Build New URL
    var newLoc = "/create.php?op=edit&book=" + pageBid + "&page=" + pageNew;

    // Do nothing if already there
    if (pageNew != pageCur)  {
        window.location.href= newLoc;
    }
    return false;
}

function doPageJump(fid) {
    // Get new pagenum
    var pageNew = parseInt(document.getElementById(fid+'_New').value);
    var pageCur = parseInt(document.getElementById(fid+'_Cur').value);
    var pageMax = parseInt(document.getElementById(fid+'_Max').value);
    var pageBid = parseInt(document.getElementById(fid+'_Bid').value);
    var pageOp = document.getElementById(fid+'_Op').value;


    // Check boundaries
    if (pageNew < 1) { pageNew = 1; }
    if (pageNew > pageMax) { pageNew = pageMax; }

    // Build New URL
    var newLoc = "/view.php?op=" + pageOp + " &book=" + pageBid + "&page=" + pageNew;

    // Do nothing if already there
    if (pageNew != pageCur)  {
        window.location.href= newLoc;
    }
    return false;
}

/*=========================================================*/

function modalBind() {
    $(".jqModal").each(function() {
        if (jQuery.data($(this), "ParsedModal") != true) {
            $(this).bind("click", function(event) {
                return modalWin($(this), event);
            });
            // Set parsed flag
            jQuery.data($(this), "ParsedModal", true);
        }
    });
}

function modalWin(n, e) {
    // n -> DOM node
    // e -> DOM Event

    // Close any open modal windows
    modalCloseAll();

    // Get data from calling element
    var rel = $(n).attr('rel');
    var relSplit = rel.split(" ");

    var myTarget = relSplit[0];
    var myArg1 = relSplit[1];
    var myHref = $(n).attr('href');


    // Check for glossary 'frame'
    var glossItem = $('#glossword').get(0);

    // Find location of clicked element
    if (glossItem != null ) {
        // Glossary modals need to be placed within '#glossword' to scroll correctly
        var targetItem = targetCoords2($(n).get(0));
        var offsetGlsw = targetCoords2($('#glossword').get(0));
        targetItem[0] = targetItem[0] - offsetGlsw[0];
        targetItem[1] = targetItem[1] - offsetGlsw[1];
    } else {
        var targetItem = targetCoords2($(n).get(0));
    }

    var modalTop = targetItem[0]
    var modalLeft = targetItem[1];

    // Determine modal window settings
    switch(myTarget) {
        case 'tags': {
            var modalClass = "tagModal";
            var modalTopOffset = -5;
            var modalLeftOffset = -2;
            var myHref = "/tags.php?book=" + myArg1;
            break;
        }
        case 'publish': {
            var modalClass = "publishModal";
            var modalTopOffset = -5;
            var modalLeftOffset = -82;
            var myHref = "/publish.php?book=" + myArg1;
            break;
        }
        case 'share': {
            var modalClass = "shareModal";
            var modalTopOffset = -5;
            var modalLeftOffset = -82;
            var myHref = "/share_with.php?book=" + myArg1;
            break;
        }
        case 'completed': {
            var modalClass = "rubricModal";
            var modalTopOffset = -150;
            var modalLeftOffset = -154;
            var myHref = "/completed.php?book=" + myArg1;
            break;
        }

        default: {
            // Undefined modal call - drop out
            if(e != null){ e.stopPropagation(); }
            return false;
        }
    }

    // Create new DOM container and add attributes
    var newModal = $('<div class="masterModal" />');
    $(newModal).show();
    $(newModal).addClass(modalClass);
    $(newModal).css('top', modalTop + modalTopOffset);
    $(newModal).css('left', modalLeft + modalLeftOffset);

    // Load external content and apply jQuery methods
    $.ajax({
        url: myHref,
        cache: false,
        success: function(html){
            $(newModal).append(html);
            modalBindClose();
            collapseBox();
        }
    });

    // Add new DOM container into page
    $('body').append(newModal);


    // Make sure modal is within boundaries
    $(".masterModal").each(function() {
        var tempW = parseInt($(this).css('width'));
        var tempC = targetCoords2($(this).get(0));
        if (tempC[1] <= 0) {
            $(this).css('left', 10);
        }
    });

    if(e != null){ e.stopPropagation(); }
    return false;
}

function modalBindClose(n) {
    // Find 'close' button and link to remove modal windows from page.
    $(".masterModal .close").each(function() {
        $(this).bind("click", function(event) {
            event.stopPropagation();
            modalCloseAll();
            return false;
        });
    });

}

function modalCloseAll() {
    hideAgent2();
    $(".masterModal").remove();
}

/*=========================================================*/

function supportBind() {
    $(".jqSupport").each(function() {
        if (jQuery.data($(this), "ParsedModal") != true) {
            $(this).bind("click", function(event) {
                return supportWin($(this), event);
            });
            // Set parsed flag
            jQuery.data($(this), "ParsedModal", true);
        }
    });
}

function supportWin(n, e) {
    // n -> DOM node
    // e -> DOM Event

    // Close any open modal windows
    modalCloseAll();

    // Get data from calling element
    var rel = $(n).attr('rel');
    var relSplit = rel.split(" ");

    var myTarget = relSplit[0];
    var myArg1 = relSplit[1];
    var myArg2 = relSplit[2];
    var myHref = $(n).attr('href');

    // Check for glossary 'frame'
    var glossItem = $('#glossword').get(0);

    // Find location of clicked element
    if (glossItem != null ) {
        // Glossary modals need to be placed within '#glossword' to scroll correctly
        var targetItem = targetCoords2($(n).get(0));
        var offsetGlsw = targetCoords2($('#glossword').get(0));
        targetItem[0] = targetItem[0] - offsetGlsw[0];
        targetItem[1] = targetItem[1] - offsetGlsw[1];
    } else {
        var targetItem = targetCoords2($(n).get(0));
    }

    var modalTop = targetItem[0]
    var modalLeft = targetItem[1];

    // Determine modal window settings
    switch(myTarget) {
        case 'asource': {
            // Audio Source
            var modalClass = "extrasModal";
            var modalTitle = "Source";
            var modalTopOffset = -1;
            var modalLeftOffset = -205;
            break;
        }
        case 'adesc': {
            // Audio Description
            var modalClass = "extrasModal";
            var modalTitle = "Description";
            var modalTopOffset = -1;
            var modalLeftOffset = -180;
            break;
        }
        case 'isource': {
            // Image Source
            var modalClass = "extrasModal";
            var modalTitle = "Source";
            var modalTopOffset = -1;
            var modalLeftOffset = -210;
            break;
        }
        case 'idesc': {
            // Image Description
            var modalClass = "extrasModal";
            var modalTitle = "Description";
            var modalTopOffset = -1;
            var modalLeftOffset = -240;
            break;
        }
        case 'fagent': {
            // Flash agent
            var modalClass = "agentModal";
            var modalTitle = $("#agent_name_" + myArg2).html();
            var modalTopOffset = -200;
            var modalLeftOffset = 0;
            var modalagentID = myArg2;
            break;
        }
        case 'aagent': {
            // Flash agent
            var modalClass = "agentModal";
            var modalTitle = $("#agent_name_" + myArg2).html();
            var modalTopOffset = -200;
            var modalLeftOffset = 0;
            break;
        }
        case 'help': {
            // Flash agent
            var modalClass = "helpModal";
            var modalTitle = "Help";
            var modalTopOffset = -1;
            var modalLeftOffset = -180;
            break;
        }
        default: {
            // Undefined modal call - drop out
            if(e != null){ e.stopPropagation(); }
            return false;
        }
    }

    // Create new DOM container and add attributes
    var newModal = buildSupportWin(myTarget, modalTitle, myArg1);
    $(newModal).show();
    $(newModal).addClass(modalClass);
    $(newModal).css('top', modalTop + modalTopOffset);
    $(newModal).css('left', modalLeft + modalLeftOffset);

    // Add new DOM container into page
    if (glossItem != null) {
        // Glossary modals need to be placed within '#glossword' to scroll correctly
        $('#glossword').append(newModal);
    } else {
        $('body').append(newModal);
    }

    // Make sure modal is within boundaries
    $(".masterModal").each(function() {
        var tempW = parseInt($(this).css('width'));
        var tempC = targetCoords2($(this).get(0));
        if (glossItem != null) {
            if (offsetGlsw[1] > tempC[1]) {
               $(this).css('left', 10);
            }
        } else if (tempC[1] <= 0) {
            $(this).css('left', 10);
        }
    });

    // Add bindings to modal window
    modalBindClose();

    // Create audio content if needed
    if (myTarget == "aagent") {
        var filepath = $('.masterModal').find('.audioPath').eq(0).html();
        showAgentAudio(filepath);
    }
    // Start agent if needed
    if (myTarget == "fagent") {
        showAgent(myArg2);
    }

    if(e != null){ e.stopPropagation(); }
    return false;
}

function buildSupportWin(myTarget, modalTitle, sourceItem) {
    var newModal = $('<div class="masterModal" />');
    $(newModal).append('<div class="header" />');
    $(newModal).append('<div class="body" />');

    // Add header elements
    $(newModal).find(".header").append('<h5>' + modalTitle + '</h5>');
    if ( (myTarget == "fagent") || (myTarget == "aagent") ) {
       $(newModal).find(".header").append('<a href="#" class="close"><img src="/images/buttons/modal_close_blue.gif" width="15" height="15" alt="Close" title="Close" class="close" /></a>');
    } else {
        $(newModal).find(".header").append('<a href="#" class="close"><img src="/images/buttons/modal_close.gif" width="15" height="15" alt="Close" title="Close" class="close" /></a>');
    }

    // Add body elements
    switch(myTarget) {
        case 'help': { }
        case 'asource': { }
        case 'adesc': { }
        case 'isource': { }
        case 'idesc': {
            $(newModal).find(".body").append($('#' + sourceItem).html());
            break;
        }
        case 'fagent': {
            $(newModal).children(".body").eq(0).append($('#' + sourceItem).html());
            $(newModal).children(".body").eq(0).append('<div id="agentDiv"></div>');
            break;
        }
        case 'aagent': {
            //$(newModal).children(".body").eq(0).append('<div id="audioDiv"></div>');
            $(newModal).children(".body").eq(0).append($('#' + sourceItem).html());
            $(newModal).find('.audioPath').eq(0).before('<div id="audioDiv"></div>');
            break;
        }
        default: {
            break;
        }
    }

    return newModal;
}

/*=========================================================*/

function saveShare(hashid) {
    // Callback
    $.get("share_with.php", { op: 'add', hash: hashid } );

    // Hide bar
    $("#shareBar").hide();
}

/*=========================================================*/

function favoriteSwap(bookid) {
    // Check state - on rel attribute
    var state = $('#fav_' + bookid).attr('rel');

    if (state == "on") {
        // Make 'remove' AJAX call
        $.get("meta.php", { op: 'fav_rem', book: bookid} );
        // Update clicked link/image and state
        new_src = "/images/buttons/star_off.png";
        new_alt = "Mark as Favorite";
        new_clk = "return favoriteAdd('" + bookid + "');";

        $('#fav_' + bookid).attr("rel", "off");
        $('#fav_' + bookid).children().eq(0).attr("src", new_src);
        $('#fav_' + bookid).children().eq(0).attr("alt", new_alt);
        $('#fav_' + bookid).children().eq(0).attr("title", new_alt);
    } else {
        // Make 'add' AJAX call
        $.get("meta.php", { op: 'fav_add', book: bookid} );

        // Update clicked link/image and state
        new_src = "/images/buttons/star_on.png";
        new_alt = "Remove from Favorites";
        new_clk = "return favoriteRemove('" + bookid + "');";

        $('#fav_' + bookid).attr("rel", "on");
        $('#fav_' + bookid).children().eq(0).attr("src", new_src);
        $('#fav_' + bookid).children().eq(0).attr("alt", new_alt);
        $('#fav_' + bookid).children().eq(0).attr("title", new_alt);
    }

    return false;
}

/*=========================================================*/

function updateTags() {
    var bookid = $("#tagBook").val();
    var tagstr = $("#tagText").val();

    //$.get("meta.php", { op: 'update', book: bookid, tags: tagstr} );
    $(".tagModal").load("tags.php", { op: 'update', book: bookid, tags: tagstr}, function() {
         modalBindClose();
    });

    return false;
}

/*=========================================================*/

function publicPublish(bookid) {
    $(".publishModal").load("publish.php", { op: 'eula', book: bookid}, function() {
         modalBindClose();
    });
    return false;
}

function publicConfirm(bookid) {
    var eula_accept = $("#eula_accept").val();
    $(".publishModal").load("publish.php", { op: 'publish', book: bookid, accept: eula_accept}, function() {
         modalBindClose();
    });
    return false;
}

function publicUnpublish(bookid) {
    $(".publishModal").load("publish.php", { op: 'remove', book: bookid}, function() {
         modalBindClose();
    });
    return false;
}

function acceptEULA() {
    // Make sure 'accept' is checked
    if (document.getElementById("eula_accept").checked != true) {
        alert("You must indicate that you have read and understand the Terms and Conditions before you can share a book.");
        return false;
    } else {
        return true;
    }
}

/*=========================================================*/

function personalClearShare(bookid, shareid) {
    $(".shareModal").load("share_with.php", { op: 'clear', book: bookid, share: shareid}, function() {
         modalBindClose();
         collapseBox();
    });
    return false;
}

function personalSendShare() {
    var bookid = $("#shareBook").val();
    var sname = $("#shareName").val();
    var semail = $("#shareEmail").val();
    var sme = $("#sharePersonal").get(0).checked;

    if (sme == true) {
        sme = 1;
    } else {
        sme = 0;
    }

    $(".shareModal").load("share_with.php", { op: 'submit', book: bookid, name: sname, email: semail, me: sme}, function() {
         modalBindClose();
         collapseBox();
    });

    return false;

}

/*=========================================================*/

function markBookComplete(bookid) {
    //$(".rubricModal").load("create.php", { op: 'completed', book: bookid}, function() {
    //     modalBindClose();
    //});
    modalBindClose();
    var newHref = "./create.php?op=completed&book=" + bookid;
    window.location.href = newHref;
    return false;
}

/*=========================================================*/

function saveResponse() {
    // Check to see if form exists
    if ($('#responseForm').length) {
        // Check to see if textarea exists
        if ($('#responseText').length) {
            var responseBook = $("#responseBook").val();
            var responsePage = $("#responsePage").val();
            var responseText = $("#responseText").val();
            $.post("response.php", { op: 'save', book: responseBook, page: responsePage, text: responseText } );
        }
    }
}

function showResponse() {
    saveResponse();

    var responseBook = $("#responseBook").val();

     // Create popup window
    var windowXY = findWindowCenter(520, 500);
    var urlPath = "./response.php?book=" + responseBook;
    var winPop = open(urlPath, 'UResponse', windowXY + ',scrollbars=yes,status=no,resizable=yes');
    if (!winPop.opener) winPop.opener = self;
    winPop.focus();
}

function showResponseText() {
    var responseBook = $("#responseBook").val();
    var responseName = $("#responseName").val();

    var newHref = "./response.php?op=text&book=" + responseBook + "&name=" + encodeURI(responseName);
    window.location.href=newHref;
}

/*=========================================================*/

function showCoaches(bookid) {
    document.cookie = "bb_coach_view_" + bookid + "=1";
    $('#bookpagenav').removeClass('coachHide');
}

function hideCoaches(bookid) {
    document.cookie = "bb_coach_view_" + bookid + "=0";
    $('#bookpagenav').addClass('coachHide');
}

/*=========================================================*/

function targetCoords2(targetNode) {
    tempTop = targetNode.offsetTop;
    tempLeft = targetNode.offsetLeft;

    // Check to see if offsetParent is the BODY
    // otherwise start looping and adding parent's offset until we get there
    var offsetParentCheck = targetNode.offsetParent;
    while ((offsetParentCheck.nodeName != "BODY") && (offsetParentCheck.nodeName != "HTML")) {
        tempTop += offsetParentCheck.offsetTop;
        tempLeft += offsetParentCheck.offsetLeft;
		offsetParentCheck = offsetParentCheck.offsetParent;
	}
	var targetResults = new Array();
    targetResults[0] = tempTop;
    targetResults[1] = tempLeft;

    return targetResults;
}

/*=========================================================*/

function correctPNG() {
   var arVersion = navigator.appVersion.split("MSIE");
   var version = parseFloat(arVersion[1]);
   if ((version >= 5.5) && (version < 7) && (document.body.filters)) {
      for(var i=0; i<document.images.length; i++) {
         var img = document.images[i];
         var imgName = img.src.toUpperCase();
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
            var newSrc = "";
            var imgTemp = img.src.split("/");
            if (img.src.indexOf("/images/buttons/") > 0) {
                newSrc = "./images/buttons/" + imgTemp[imgTemp.length-1];
            }
            if (img.src.indexOf("/bookresources/") > 0) {
                newSrc = "./bookresources/" + imgTemp[imgTemp.length-1];
            }
            if (newSrc != "") {
                img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + newSrc + "', sizingMethod='scale')";
                img.src = "./images/1x1.gif";
            }
         }
      }
   }
}

/*=========================================================*/

function startPageNav() {
    enablePageNav()

    $("input, textarea").bind('focus', function() {
        disablePageNav();
    });

    $("input, textarea").bind('blur', function() {
        enablePageNav();
    });
}

function enablePageNav() {
    $(document).bind('keydown', function(e) {
        handlePageNav(e);
    });
}
function disablePageNav() {
    $(document).unbind('keydown');
}

function handlePageNav(e) {
    code = e.keyCode ? e.keyCode : e.which;
    //alert( code.toString() );
    // Left Arrow
    if(code.toString() == 37) {
        if (pagePrev != "") { window.location.href= pagePrev; }
    }
    // Right Arrow
    if(code.toString() == 39) {
        if (pageNext != "") { window.location.href= pageNext; }
    }
}

/*=========================================================*/
// Based on article from: http://articles.sitepoint.com/article/jquery-star-rating

var starRating = {
  create: function(selector) {
    // loop over every element matching the selector
    $(selector).each(function() {
      var $list = $('<div></div>');
      // loop over every radio button in each container
      $(this)
        .find('input:radio')
        .each(function(i) {
          var rating = $(this).parent().text();
          var $item = $('<a href="#"></a> ')
            .attr('title', rating)
            .html("<span>" + rating + "</span>");  // Add span for IE6 support (hiding numbers)

          starRating.addHandlers($item);
          $list.append($item);

          if($(this).is(':checked')) {
            $item.prevAll().andSelf().addClass('rating');
          }
        });
        // Hide the original radio buttons and submit button
        $(this).append($list).find('label').hide();
        $(this).append($list).find('input:submit').hide();
    });
  },
  addHandlers: function(item) {
    $(item).click(function(e) {
      // Handle Star click
      var $star = $(item);
      var $allLinks = $(item).parent();

      // Set the radio button value
      $allLinks
        .parent()
        .find('input:radio[value=' + parseInt($star.text()) + ']')
        .attr('checked', true);

      // Set the ratings
      $allLinks.children().removeClass('rating');
      $star.prevAll().andSelf().addClass('rating');

      // prevent default link click
      e.preventDefault();

      // Perfoming a submit on click can be done here
      // // (Callback, ajax submit, etc.)
      updateRating($(item).parents("form").eq(0));

    }).hover(function() {
      // Handle star mouse over
      $(this).prevAll().andSelf().addClass('rating-over');
      $(this).nextAll().addClass('rating-off');
    }, function() {
      // Handle star mouse out
      $(this).siblings().andSelf().removeClass('rating-over');
      $(this).siblings().andSelf().removeClass('rating-off');
    }).focus(function() {
      // Handle keyboard focus
      $(this).prevAll().andSelf().addClass('rating-over');
      $(this).nextAll().addClass('rating-off');
    }).blur(function() {
      // Handle keyboard blur
      $(this).siblings().andSelf().removeClass('rating-over');
      $(this).siblings().andSelf().removeClass('rating-off');
    });
  }
}

/*=========================================================*/

function updateRating(node) {
    bookid = $(node).find("input[name='bookid']").val();
    rating = $(node).find("input[name='rating']:checked").val();
    //alert("click: " + bookid + "::" + rating);
    $.get("meta.php", { op: 'rate_book', book: bookid, rate: rating} );

    return false;
}

/*=========================================================*/

$(window).ready(function() {
    collapseBox();
    popupBind();
    modalBind();
    supportBind();
    starRating.create('.stars');
});
