﻿///////////////////////////////////////////////////////////////////////////////
//
//  PTI.js
//
// 
// © 2009 Page Turn Interactive Ltd. All Rights Reserved.
//
//
///////////////////////////////////////////////////////////////////////////////

var responseSeperator = "#\\";
var tableSeperator = "}\\";
var rowSeperator = "|\\";
var columnSeperator = "~\\";

var modeFlash = "F";
var modeHTML = "H";

var moduleTypeLink = 1;
var moduleTypePollAnswer = 2;
var moduleTypeArticle = 3;
var moduleTypeVideo = 4;
var moduleTypeJump = 5;
var moduleTypeComp = 6;
var moduleTypeGallery = 7;
var moduleTypeForward = 8;

var ptiIsIE = (jQuery.browser.msie && parseInt(jQuery.browser.version.substr(0,1)) < 7);

var ptiPageTurns = new Array();




function ptiGetInstance(pstrContainerElementID)
{
    var objReturn;
    
    for (var intInstanceIndex = 0; intInstanceIndex < ptiPageTurns.length; ++intInstanceIndex)
    {   
        if (ptiPageTurns[intInstanceIndex].containerElementID == pstrContainerElementID)
        {
            objReturn = ptiPageTurns[intInstanceIndex];
        }
    }
    
    return objReturn;
}




/**** HTML Interface - Start ********************************************************************/
function ptiPreviousPage(pstrContainerElementID)
{
    ptiTrace("ptiPreviousPage: " + pstrContainerElementID);
    
    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        if (objPageTurn.mode == modeFlash)
        {
            swfobject.getObjectById(objPageTurn.elementID).ptiPreviousPage();
        }
        else
        {
            objPageTurn.htmlPreviousPage();
        }        
    }
}

function ptiNextPage(pstrContainerElementID)
{
    ptiTrace("ptiNextPage: " + pstrContainerElementID);

    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        if (objPageTurn.mode == modeFlash)
        {
            swfobject.getObjectById(objPageTurn.elementID).ptiNextPage();
        }
        else
        {
            objPageTurn.htmlNextPage();
        }        
    }
}

function ptiGotoPage(pstrContainerElementID, pageNo)
{
    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        if (objPageTurn.mode == modeFlash)
        {
            swfobject.getObjectById(objPageTurn.elementID).ptiGotoPage(pageNo);
        }
        else
        {
            objPageTurn.htmlGotoPage(pageNo);
        }        
    }
}
function ptiGotoPageSlow(pstrContainerElementID, pageNo)
{
    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        if (objPageTurn.mode == modeFlash)
        {
            swfobject.getObjectById(objPageTurn.elementID).ptiGotoPageSlow(pageNo);
        }
        else
        {
            objPageTurn.htmlGotoPage(pageNo);
        }        
    }
}
function ptiContents(pstrContainerElementID)
{
    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        objPageTurn.showContents();
    }
}
function ptiCloseContentsGotoPage(pstrContainerElementID, pageNo)
{
    var objPageTurn = ptiGetInstance(pstrContainerElementID);    
    
    if (objPageTurn.loaded)
    {
        objPageTurn.closeContentsGotoPage(pageNo);
    }
}


/**** HTML Interface - End ****/





/**** Flash/HTML Callback Interface - Start ********************************************************************/
function ptiPagesViewed(pstrContainerElementID, pintLeftPageID, pintRightPageID)
{
    ptiTrace("ptiPagesViewed: " + pstrContainerElementID + ":" + pintLeftPageID + ":" + pintRightPageID);
    
    ptiGetInstance(pstrContainerElementID).pagesViewed(pintLeftPageID, pintRightPageID);
}



function ptiLinkClicked(pstrContainerElementID, pintType, pintID)
{
    ptiTrace("ptiLinkClicked: " + pstrContainerElementID + ":" + pintType + ":" + pintID);
    

    var objPageTurn = ptiGetInstance(pstrContainerElementID);    

    if (pintType == moduleTypeLink)
    {
        //Link
        getByID(objPageTurn.allOnlineMagPageLinks, pintID).clicked();
    }    
    else if (pintType == moduleTypePollAnswer)
    {
        //PollAnswer
        getByID(objPageTurn.allOnlineMagPagePollAnswers, pintID).clicked();
    }    
    else if (pintType == moduleTypeArticle)
    {
        //Article
        getByID(objPageTurn.allOnlineMagPageArticles, pintID).clicked();
    }    
    else if (pintType == moduleTypeJump)
    {
        //Jump
        getByID(objPageTurn.allOnlineMagPageJumps, pintID).clicked();
    }    
    else if (pintType == moduleTypeComp)
    {
        //Comp
        getByID(objPageTurn.allOnlineMagPageComps, pintID).clicked();
    }    
    else if (pintType == moduleTypeGallery)
    {
        //Gallery
        getByID(objPageTurn.allOnlineMagPageGalleries, pintID).clicked();
    }    
    else if (pintType == moduleTypeForward)
    {
        //Forward
        getByID(objPageTurn.allOnlineMagPageForwards, pintID).clicked();
    }    
}


function ptiVideoPlayed(pstrContainerElementID, pintID)
{
    ptiTrace("ptiVideoPlayed: " + pstrContainerElementID + ":" + pintID);


    var objPageTurn = ptiGetInstance(pstrContainerElementID);
    var strUrl = "http://" + objPageTurn.host + "/PTI/JSON/PTI.aspx?M=7&VID=" + objPageTurn.onlineMagIssueVisitID.toString() + "&PNS=" + strRowDelimitedPageIDs + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });

}


function ptiGetConfig(pstrContainerElementID)
{
    var objPageTurn = ptiGetInstance(pstrContainerElementID);
    
    return objPageTurn.flashConfig;
}


function ptiGetPages(pstrContainerElementID)
{
    return ptiGetInstance(pstrContainerElementID).flashPages;
}


function ptiTrace(pstrMessage)
{
    jQuery("#divTrace").append(pstrMessage + "<br />");    
}
/**** Flash Interface - End ****/


















OnlineMagIssue = function(pstrContainerElementID, pobjConfig)
{
    var strPN = "0";
    var strHTML = "";

    this.flashConfig = pobjConfig;
    
    this.mode = modeFlash;
    if (swfobject.getFlashPlayerVersion().major == 0)
    {
        this.mode = modeHTML;    
    }
    else if (swfobject.getQueryParamValue("ptih") && swfobject.getQueryParamValue("ptih").toLowerCase() == "y")
    {
        this.mode = modeHTML;    
    }

    this.containerElementID = pstrContainerElementID;
    this.elementID = pstrContainerElementID + "_inner";
    
    this.flashConfig.containerElementID = this.containerElementID;
    this.flashConfig.elementID = this.elementID;
    
    
        
    this.loaded = false;
    this.host = this.flashConfig.hostIncWWW;
        

    this.flashPages = new Array();
    ptiPageTurns[ptiPageTurns.length] = this;

    if (swfobject.getQueryParamValue("ptie"))
    {
        this.emailAddress = unescape(swfobject.getQueryParamValue("ptie"));
    }    
    else
    {
        this.emailAddress = "";
    }    
        
    if (this.flashConfig.useUrlParams)
    {
        if (swfobject.getQueryParamValue("ptip"))
        {
            strPN = swfobject.getQueryParamValue("ptip");
            this.flashConfig.firstPage = strPN; // url param override js setting
        }    

        if (swfobject.getQueryParamValue("ptim"))
        {
            this.loadOnlineMag(swfobject.getQueryParamValue("ptim"), strPN);
        }
        else if (swfobject.getQueryParamValue("ptii"))
        {
            this.loadOnlineMagIssue(swfobject.getQueryParamValue("ptii"), strPN);    
        }
    }
}

OnlineMagIssue.prototype.loadOnlineMag = function(pstrMGUID, pstrPN)
{   
    if (pstrPN == null)
    {
        pstrPN = "0";
    }
     
    var strUrl = "http://" + this.host + "/PTI/JSON/PTI.aspx?M=1&MGUID=" + pstrMGUID + "&PN=" + pstrPN + "&EA=" + encodeURI(this.emailAddress) + "&callback=?";
    jQuery.getJSON(strUrl, createDelegate(this, this.gotOnlineMagIssue));

}

OnlineMagIssue.prototype.loadOnlineMagIssue = function(pstrIGUID, pstrPN)
{
    if (pstrPN == null)
    {
        pstrPN = "0";
    }

    var strUrl = "http://" + this.host + "/PTI/JSON/PTI.aspx?M=1&IGUID=" + pstrIGUID + "&PN=" + pstrPN + "&EA=" + encodeURI(this.emailAddress) + "&callback=?";
    jQuery.getJSON(strUrl, createDelegate(this, this.gotOnlineMagIssue));
}

OnlineMagIssue.prototype.gotOnlineMagIssue = function(pobjReturn)
{
    var strHTML;
    
    if (pobjReturn.returnStatus != 1)
    {
        return;
    }

    var arData;

    var strOnlineMag;
    var strOnlineMagIssue;
    var strOnlineMagPages;
    var strOnlineMagPageLinks;
    var strOnlineMagPagePollAnswers;
    var strOnlineMagPageArticles;
    var strOnlineMagPageVideos;
    var strOnlineMagPageJumps;
    var strOnlineMagPageComps;
    var strOnlineMagPageCompAnswers;
    var strOnlineMagPageGalleries;
    var strOnlineMagPageGalleryPhotos;
    var strOnlineMagPageForwards;


    // Must be ok, get Online Mag details
    arData = pobjReturn.returnData.split(tableSeperator);
    strOnlineMag = arData[0];
    strOnlineMagIssue = arData[1];
    strOnlineMagPages = arData[2];
    strOnlineMagPageLinks = arData[3];
    strOnlineMagPagePollAnswers = arData[4];
    strOnlineMagPageArticles = arData[5];
    strOnlineMagPageVideos = arData[6];
    strOnlineMagPageJumps = arData[7];
    strOnlineMagPageComps = arData[8];
    strOnlineMagPageCompAnswers = arData[9];
    strOnlineMagPageGalleries = arData[10];
    strOnlineMagPageGalleryPhotos = arData[11];
    strOnlineMagPageForwards = arData[12];


    if (strOnlineMagPages == null)
    {
        strOnlineMagPages = "";
    }

    if (strOnlineMagPageLinks == null)
    {
        strOnlineMagPageLinks = "";
    }

    if (strOnlineMagPagePollAnswers == null)
    {
        strOnlineMagPagePollAnswers = "";
    }

    if (strOnlineMagPageArticles == null)
    {
        strOnlineMagPageArticles = "";
    }

    if (strOnlineMagPageVideos == null)
    {
        strOnlineMagPageVideos = "";
    }

    if (strOnlineMagPageJumps == null)
    {
        strOnlineMagPageJumps = "";
    }

    if (strOnlineMagPageComps == null)
    {
        strOnlineMagPageComps = "";
    }

    if (strOnlineMagPageCompAnswers == null)
    {
        strOnlineMagPageCompAnswers = "";
    }

    if (strOnlineMagPageGalleries == null)
    {
        strOnlineMagPageGalleries = "";
    }

    if (strOnlineMagPageGalleryPhotos == null)
    {
        strOnlineMagPageGalleryPhotos = "";
    }

    if (strOnlineMagPageForwards == null)
    {
        strOnlineMagPageForwards = "";
    }

    if (strOnlineMag.length > 0)
    {
        var arOnlineMag = strOnlineMag.split(columnSeperator);

        this.onlineMagID = parseInt(arOnlineMag[0]);
        this.onlineMagName = arOnlineMag[1];
        this.onlineMagWidth = parseInt(arOnlineMag[2]);
        this.onlineMagHeight = parseInt(arOnlineMag[3]);
        this.onlineMagFrameWidth = parseInt(arOnlineMag[4]);
        this.onlineMagFrameHeight = parseInt(arOnlineMag[5]);
    }

    if (strOnlineMagIssue.length > 0)
    {
        var arOnlineMagIssue = strOnlineMagIssue.split(columnSeperator);

        this.onlineMagIssueID = parseInt(arOnlineMagIssue[0]);
        this.onlineMagIssueIssueDate = parseInt(arOnlineMagIssue[1]);
        this.onlinePDFVersionUrl = arOnlineMagIssue[2];
        this.onlineMagIssueVisitID = parseInt(arOnlineMagIssue[3]);
        this.thumbnailSize = parseInt(arOnlineMagIssue[4]);
        
        // workout the thumb width and height
        if (this.onlineMagHeight > this.onlineMagWidth)
        {
            //Portrait
            this.thumbnailHeight = this.thumbnailSize;
            this.thumbnailWidth = parseInt(this.onlineMagWidth / (this.onlineMagHeight / this.thumbnailSize));
        }
        else
        {
            //Landscape
            this.thumbnailWidth = this.thumbnailSize;
            this.thumbnailHeight = parseInt(this.onlineMagHeight / (this.onlineMagWidth / this.thumbnailSize));            
        }            
    }


    this.allOnlineMagPageLinks = new Array();
    this.allOnlineMagPagePollAnswers = new Array();
    this.allOnlineMagPageArticles = new Array();
    this.allOnlineMagPageVideos = new Array();
    this.allOnlineMagPageJumps = new Array();
    this.allOnlineMagPageComps = new Array();
    this.allOnlineMagPageCompAnswers = new Array();
    this.allOnlineMagPageGalleries = new Array();
    this.allOnlineMagPageGalleryPhotos = new Array();
    this.allOnlineMagPageForwards = new Array();


    this.onlineMagPages = new OnlineMagPages(this, strOnlineMagPages, strOnlineMagPageLinks, strOnlineMagPagePollAnswers, strOnlineMagPageArticles, strOnlineMagPageVideos, strOnlineMagPageJumps, strOnlineMagPageComps, strOnlineMagPageCompAnswers, strOnlineMagPageGalleries, strOnlineMagPageGalleryPhotos, strOnlineMagPageForwards);
 
    
    this.flashConfig.onlineMagWidth = this.onlineMagWidth;
    this.flashConfig.onlineMagHeight = this.onlineMagHeight;
    this.flashConfig.onlineMagFrameWidth = this.onlineMagFrameWidth;
    this.flashConfig.onlineMagFrameHeight = this.onlineMagFrameHeight;
    
    this.currentPageNo = this.flashConfig.firstPage;
    

    //setup the navbar & inner container
    strHTML = "";
    
    if (this.flashConfig.navBar == "bottom")
    {
        strHTML += "<div id=\"" + this.elementID + "\"></div>";
    }
    strHTML += "<div class=\"ptinav\">";
    strHTML += "    <div class=\"ptinav_previous\" title=\"Previous Page\"></div>";
    strHTML += "    <div class=\"ptinav_page\"></div>";    
    strHTML += "    <div class=\"ptinav_logo\"><a href=\"http://www.pageturninteractive.co.uk\" target=\"_blank\"><span>Page Turn Interactive</span></a></div>";    
    strHTML += "    <div class=\"ptinav_next\" title=\"Next Page\"></div>";
    strHTML += "    <div class=\"ptinav_contents\" title=\"View Contents\"></div>";
    strHTML += "</div>";
    if (this.flashConfig.navBar == "top")
    {
        strHTML += "<div id=\"" + this.elementID + "\"></div>";
    }

    jQuery("#" + this.containerElementID).html(strHTML);

    var strContainerElementID = this.containerElementID;
    jQuery("#" + this.containerElementID + " .ptinav_previous").bind("click", function (){ptiPreviousPage(strContainerElementID);});
    jQuery("#" + this.containerElementID + " .ptinav_next").bind("click", function (){ptiNextPage(strContainerElementID);});
    jQuery("#" + this.containerElementID + " .ptinav_contents").bind("click", function (){ptiContents(strContainerElementID);});


    if (ptiIsIE)
    {
        jQuery("#" + this.containerElementID + " .ptinav_previous, #" + this.containerElementID + " .ptinav_next, #" + this.containerElementID + " .ptinav_logo a, #" + this.containerElementID + " .ptinav_page, #" + this.containerElementID + " .ptinav_contents").fixPNG();
    }


    if (this.mode == modeFlash)
    {   
        // Flash Version 
        var objFlashVars = {};
        var objFlashParams = {wmode: "transparent", allowscriptaccess: "always"};
        var objFlashAttributes = {};   
        
        swfobject.embedSWF("http://" + this.host + "/PTI/PTI.swf?id=" + this.containerElementID, this.elementID, this.onlineMagFrameWidth, this.onlineMagFrameHeight, "8.0.0", "expressInstall.swf", objFlashVars, objFlashParams, objFlashAttributes);
    }
    else
    {
        // HTML Version
        var intTopBottomMargin = parseInt((this.onlineMagFrameHeight - this.onlineMagHeight) / 2);
        
        strHTML = "";
        strHTML += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin: " + intTopBottomMargin.toString() + "px auto; width:" + this.onlineMagFrameWidth + ";height:" + this.onlineMagFrameHeight + "\">";
        strHTML += "<tbody>";
        strHTML += "<tr>";
        strHTML += "<td align=\"right\" width=\"50%\"><div class=\"ptihtml_leftpage\" style=\"position: relative;\">&nbsp;</div></td>";
        strHTML += "<td align=\"left\" width=\"50%\"><div class=\"ptihtml_rightpage\" style=\"position: relative;\">&nbsp;</div></td>";
        strHTML += "</tr>";
        strHTML += "<tbody>";
        strHTML += "</table>";
        
        jQuery("#" + this.elementID).html(strHTML);
                
        this.htmlShowPages();
    }

    this.loaded = true;
}



OnlineMagIssue.prototype.htmlPreviousPage = function()
{
    if (this.currentPageNo > 0)
    {
        this.currentPageNo -= 2;
        
        if (this.currentPageNo < 0)
        {
            this.currentPageNo = 0;
        }
        
        this.htmlShowPages();
    }
}

OnlineMagIssue.prototype.htmlNextPage = function()
{
    if (this.currentPageNo < (this.onlineMagPages.length - 1))
    {
        this.currentPageNo += 2;
        

        if (this.currentPageNo > (this.onlineMagPages.length - 1))
        {
            this.currentPageNo = (this.onlineMagPages.length - 1);
        }
        
        this.htmlShowPages();
    }
}

OnlineMagIssue.prototype.htmlGotoPage = function(pageNo)
{
    var intCurrentPage = this.currentPageNo;
    var intNextPage = pageNo;
    
    if (intCurrentPage  % 2 == 0) intCurrentPage -= 1;
    if (intNextPage  % 2 == 0) intNextPage -= 1;
    
    if (intCurrentPage != intNextPage)
    {    
        this.currentPageNo = pageNo;
        this.htmlShowPages();
    }
}

OnlineMagIssue.prototype.htmlShowPages = function()
{
    var strLeft = "&nbsp;";
    var strRight = "&nbsp;";
    var intLeftPageNo = -1;
    var intRightPageNo = 1;
    var intLeftPageID = 0;
    var intRightPageID = 0;
    
    if (this.currentPageNo == 0)
    {
        // First Page
        intRightPageNo = this.currentPageNo;
        strRight = "<img src=\"" + this.onlineMagPages.items[intRightPageNo].url + "\" alt=\"" + this.onlineMagPages.items[intRightPageNo].title + "\" style=\"width:" + this.onlineMagWidth.toString() + "px;height:" + this.onlineMagHeight.toString() + "px;border:none;\" />";
        intRightPageID = this.onlineMagPages.items[intRightPageNo].id;        
    }
    else if (this.currentPageNo == (this.onlineMagPages.length - 1))
    {
        // Last Page
        intLeftPageNo = this.currentPageNo;
        strLeft = "<img src=\"" + this.onlineMagPages.items[intLeftPageNo].url + "\" alt=\"" + this.onlineMagPages.items[intLeftPageNo].title + "\" style=\"width:" + this.onlineMagWidth.toString() + "px;height:" + this.onlineMagHeight.toString() + "px;border:none;\" />";        
        intLeftPageID = this.onlineMagPages.items[intLeftPageNo].id;
    }
    else
    {
        // two page spread
        intLeftPageNo = this.currentPageNo;
        
        if (intLeftPageNo % 2 == 0)
        {
            intLeftPageNo -= 1;
        }
        strLeft = "<img src=\"" + this.onlineMagPages.items[intLeftPageNo].url + "\" alt=\"" + this.onlineMagPages.items[intLeftPageNo].title + "\" style=\"width:" + this.onlineMagWidth.toString() + "px;height:" + this.onlineMagHeight.toString() + "px;border:none;\" />";        
        intLeftPageID = this.onlineMagPages.items[intLeftPageNo].id;

        intRightPageNo = (intLeftPageNo + 1);
        strRight = "<img src=\"" + this.onlineMagPages.items[intRightPageNo].url + "\" alt=\"" + this.onlineMagPages.items[intRightPageNo].title + "\" style=\"width:" + this.onlineMagWidth.toString() + "px;height:" + this.onlineMagHeight.toString() + "px;border:none;\" />";
        intRightPageID = this.onlineMagPages.items[intRightPageNo].id;
    }


    // Output Pages
    jQuery("#" + this.elementID + " .ptihtml_leftpage").html(strLeft);
    jQuery("#" + this.elementID + " .ptihtml_rightpage").html(strRight);    


    // Output Links
    var arPageNos = new Array();
    if (intLeftPageNo > -1)
    {
        arPageNos.push({pageNo: intLeftPageNo, pageClass: "ptihtml_leftpage"});
    }
    if (intRightPageNo > -1)
    {
        arPageNos.push({pageNo: intRightPageNo, pageClass: "ptihtml_rightpage"});
    }


    for (var intPageIndex = 0; intPageIndex < arPageNos.length; ++intPageIndex)
    {   
        var intPageNo = arPageNos[intPageIndex].pageNo;
        var strPageClass= arPageNos[intPageIndex].pageClass;
        var strModuleHTML = "";

        for (var intModuleIndex = 0; intModuleIndex < this.flashPages[intPageNo].modules.length; ++intModuleIndex)
        {   
            var objModule = this.flashPages[intPageNo].modules[intModuleIndex];
            
            if (objModule.moduleType != moduleTypeVideo)
            {
                strModuleHTML += "<div ";
                strModuleHTML += "class=\"ptihtml_module\" ";
                strModuleHTML += "onclick=\"ptiLinkClicked('" + this.containerElementID + "', " + objModule.moduleType + ", " + objModule.id + ");\" ";
                strModuleHTML += "style=\"position: absolute; display: block; left: " + objModule.posLeft + "px; top: " + objModule.posTop + "px; width: " + objModule.width + "px; height: " + objModule.height + "px;\" ";
                strModuleHTML += ">";
                strModuleHTML += "</div>";
            }                        
        }
                
        jQuery("#" + this.elementID + " ." + strPageClass).append(strModuleHTML);        
    }

    ptiPagesViewed(this.containerElementID, intLeftPageID, intRightPageID);
}


 

OnlineMagIssue.prototype.pagesViewed = function(pintLeftPageID, pintRightPageID)
{
    var strPages = "";
    
    if (pintLeftPageID < 1)
    {
        pintLeftPageID = 0
    }
    else
    {
        strPages += (getByID(this.onlineMagPages.items, pintLeftPageID).number + 1) + "-";
    }

    if (pintRightPageID < 1)
    {
        pintRightPageID = 0
    }
    else
    {
        strPages += (getByID(this.onlineMagPages.items, pintRightPageID).number + 1) + "-";
    }

    strPages = strPages.substring(0, (strPages.length - 1)) + " of " + this.onlineMagPages.length;
    
    jQuery("#" + this.containerElementID + " .ptinav_page").html(strPages);

    
    

    var strRowDelimitedPageIDs = pintLeftPageID.toString() + "," + pintRightPageID.toString();    
    var strUrl = "http://" + this.host + "/PTI/JSON/PTI.aspx?M=3&VID=" + this.onlineMagIssueVisitID.toString() + "&PNS=" + strRowDelimitedPageIDs + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });
}


OnlineMagIssue.prototype.PDFVisit = function()
{
    var strUrl = "http://" + this.host + "/PTI/JSON/PTI.aspx?M=2&VID=" + this.onlineMagIssueVisitID.toString() + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });
}

OnlineMagIssue.prototype.showContents = function()
{
    var strHTML = "";
    var objOnlineMagIssue = this;
    
    strHTML += "<div class=\"pticontent\">";

    strHTML += "<a class=\"pti_thumb pti_thumbright\">"
    strHTML += "<img class=\"pti_thumbpageblank\" src=\"" + "http://" + this.host + "/PTI/Themes/Transparent.gif\" width=\"" + this.thumbnailWidth.toString() + "\" height=\"" + this.thumbnailHeight.toString() + "\" />"
    strHTML += "</a>";

    for (var intPageIndex = 0; intPageIndex < this.onlineMagPages.length; ++intPageIndex)
    {   
        var objPage = this.onlineMagPages.items[intPageIndex];

        if (intPageIndex % 2)
        {
            strHTML += "<a class=\"pti_thumb pti_thumbleft\" ";
        }
        else
        {
            strHTML += "<a class=\"pti_thumb pti_thumbright\" ";
        }
                
        strHTML += "title=\"" + htmlEncode(objPage.title) + "\" href=\"javascript: ptiCloseContentsGotoPage('" + this.containerElementID + "', " + objPage.number.toString() + ");\">";
        strHTML += "<img class=\"pti_thumbpage\" style=\"-moz-opacity:0;\" src=\"" + objPage.thumbnailUrl + "\" alt=\"" + htmlEncode(objPage.title) + "\" width=\"" + this.thumbnailWidth.toString() + "\" height=\"" + this.thumbnailHeight.toString() + "\" />"
        strHTML += "</a>";
    }

    strHTML += "</div>";
    
    var objItems = new Array();
    objItems.push(jQuery.fn.ptibox.generateItemObject(strHTML, "", "", "Contents", null, (6 * this.thumbnailWidth) + 140, (3 * this.thumbnailHeight) + 100));    
    jQuery().ptibox({itemArray              : objItems, 
                     showInfoButton         : false, 
                     showPlayButton         : false,
                     callbackOnShow         : function() {
                     
                        jQuery(".pticontent .pti_thumb .pti_thumbpage").each(function(index) {
                            if (jQuery(".pticontent .pti_thumb .pti_thumbpage").get(index).complete)
                            {
                                jQuery(this).animate({opacity: 1.0}, 1000);
                            }
                            else
                            {
                                jQuery(this).bind('load', function() {
                                    jQuery(this).animate({opacity: 1.0}, 1000);
                                });
                            }
                        
                        });
                        
                     }
                     
                    });
    
}

OnlineMagIssue.prototype.closeContentsGotoPage = function(pageNo)
{
    
    var strElementID = this.elementID;
    var objOnlineMagIssue = this;
    
    jQuery(".pticontent .pti_thumb .pti_thumbpage").unbind();

    if (this.mode == modeFlash)
    {
        jQuery.fn.ptibox.close( function(){
                                swfobject.getObjectById(strElementID).ptiGotoPage(pageNo);
                                });
    }
    else
    {
        jQuery.fn.ptibox.close( function(){
                                objOnlineMagIssue.htmlGotoPage(pageNo);
                                });
    }        

}


OnlineMagPages = function(pobjOnlineMagIssue, pstrOnlineMagPages, pstrOnlineMagPageLinks, pstrOnlineMagPagePollAnswers, pstrOnlineMagPageArticles, pstrOnlineMagPageVideos, pstrOnlineMagPageJumps, pstrOnlineMagPageComps, pstrOnlineMagPageCompAnswers, pstrOnlineMagPageGalleries, pstrOnlineMagPageGalleryPhotos, pstrOnlineMagPageForwards)
{
    this.onlineMagIssue = pobjOnlineMagIssue;
    this.items = new Array();
    this.length = 0;
        
    if (pstrOnlineMagPages.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPages.split(rowSeperator);
        
    for (var intPageIndex = 0; intPageIndex < arData.length; ++intPageIndex)
    {   
        objOnlineMagPage = new OnlineMagPage(this, intPageIndex, arData[intPageIndex], pstrOnlineMagPageLinks, pstrOnlineMagPagePollAnswers, pstrOnlineMagPageArticles, pstrOnlineMagPageVideos, pstrOnlineMagPageJumps, pstrOnlineMagPageComps, pstrOnlineMagPageCompAnswers, pstrOnlineMagPageGalleries, pstrOnlineMagPageGalleryPhotos, pstrOnlineMagPageForwards);
        this.items[this.items.length] = objOnlineMagPage;
    }

    this.length = this.items.length;
}





OnlineMagPage = function(pobjOnlineMagPages, pintPageNumber, pstrOnlineMagPage, pstrOnlineMagPageLinks, pstrOnlineMagPagePollAnswers, pstrOnlineMagPageArticles, pstrOnlineMagPageVideos, pstrOnlineMagPageJumps, pstrOnlineMagPageComps, pstrOnlineMagPageCompAnswers, pstrOnlineMagPageGalleries, pstrOnlineMagPageGalleryPhotos, pstrOnlineMagPageForwards)
{
    this.onlineMagPages = pobjOnlineMagPages;

    if (pstrOnlineMagPage.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPage.split(columnSeperator);
    
    this.id = arData[0];
    this.title = arData[1];
    this.url = arData[2];
    this.thumbnailUrl = arData[3];
    this.number = pintPageNumber;

    
    this.OnlineMagPageLinks = new OnlineMagPageLinks(this, pstrOnlineMagPageLinks);
    this.OnlineMagPagePollAnswers = new OnlineMagPagePollAnswers(this, pstrOnlineMagPagePollAnswers);    
    this.OnlineMagPageArticles = new OnlineMagPageArticles(this, pstrOnlineMagPageArticles);
    this.OnlineMagPageVideos = new OnlineMagPageVideos(this, pstrOnlineMagPageVideos);
    this.OnlineMagPageJumps = new OnlineMagPageJumps(this, pstrOnlineMagPageJumps);
    this.OnlineMagPageComps = new OnlineMagPageComps(this, pstrOnlineMagPageComps, pstrOnlineMagPageCompAnswers);
    this.OnlineMagPageGalleries = new OnlineMagPageGalleries(this, pstrOnlineMagPageGalleries, pstrOnlineMagPageGalleryPhotos);
    this.OnlineMagPageForwards = new OnlineMagPageForwards(this, pstrOnlineMagPageForwards);
    
    
    // Populate Flash Object
    var objFlashPage = {id: this.id, url: this.url, modules: new Array()};

    populateFlashPageLink(moduleTypeLink, this.OnlineMagPageLinks, objFlashPage.modules);
    populateFlashPageLink(moduleTypePollAnswer, this.OnlineMagPagePollAnswers, objFlashPage.modules);
    populateFlashPageLink(moduleTypeArticle, this.OnlineMagPageArticles, objFlashPage.modules);
    populateFlashPageLink(moduleTypeVideo, this.OnlineMagPageVideos, objFlashPage.modules);
    populateFlashPageLink(moduleTypeJump, this.OnlineMagPageJumps, objFlashPage.modules);
    populateFlashPageLink(moduleTypeComp, this.OnlineMagPageComps, objFlashPage.modules);
    populateFlashPageLink(moduleTypeGallery, this.OnlineMagPageGalleries, objFlashPage.modules);
    populateFlashPageLink(moduleTypeForward, this.OnlineMagPageForwards, objFlashPage.modules);

    this.onlineMagPages.onlineMagIssue.flashPages[this.onlineMagPages.onlineMagIssue.flashPages.length] = objFlashPage;
}

function populateFlashPageLink(pintModuleType, pobjs, pobjAddToArray)
{
    var strUrl = "";
    var blnAutoPlay = false;

    for (var intInstanceIndex = 0; intInstanceIndex < pobjs.length; ++intInstanceIndex)
    {
        var obj = pobjs.items[intInstanceIndex];

        strUrl = "";
        blnAutoPlay = false;

        if (obj.url != null)
        {
            strUrl = obj.url;
        }
        
        if (obj.autoPlay != null)
        {
            blnAutoPlay = obj.autoPlay;
        }
    
        var objLink = {moduleType: pintModuleType,
                       id: obj.id, 
                       onlineMagPageID: obj.onlineMagPageID, 
                       width: obj.width, 
                       height: obj.height, 
                       posLeft: obj.posLeft, 
                       posTop: obj.posTop, 
                       url: strUrl, 
                       autoPlay: blnAutoPlay};
        
        pobjAddToArray[pobjAddToArray.length] = objLink;    
    }
}

OnlineMagPage.prototype.getPageVideoHTML = function(parAutoPlayPageVideos)
{
    var strReturn = "";

    if (this.OnlineMagPageVideos.length > 0)
    {
        for (var intPageVideoIndex = 0; intPageVideoIndex < this.OnlineMagPageVideos.length; ++intPageVideoIndex)
        {
            var objPageVideo = this.OnlineMagPageVideos.items[intPageVideoIndex];
            var strAutoStart = "";
            
            if (objPageVideo.autoPlay)
            {
                strAutoStart = "true";
                parAutoPlayPageVideos[parAutoPlayPageVideos.length] = objPageVideo;
            }
            else
            {
                strAutoStart = "false";
            }
            
            strReturn += "<div style=\"position:absolute; top: " + objPageVideo.posTop.toString() + "px; left: " + objPageVideo.posLeft.toString() + "px; width: " + objPageVideo.width.toString() + "px; height: " + objPageVideo.height.toString() + "px;\"";
            strReturn += "<object id='mediaPlayer' width=\"" + objPageVideo.width.toString() + "\" height=\"" + objPageVideo.height.toString() + "\"";
            strReturn += "classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'";
            strReturn += "codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'";
            strReturn += "standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>";
            strReturn += "<param name='fileName' value=\"" + objPageVideo.url + "\">";
            strReturn += "<param name='animationatStart' value='true'>";
            strReturn += "<param name='transparentatStart' value='true'>";
            strReturn += "<param name='autoStart' value='" + strAutoStart + "'>";
            strReturn += "<param name='showControls' value=\"true\">";
            strReturn += "<param name='loop' value=\"true\">";
            strReturn += "<embed type='application/x-mplayer2'";
            strReturn += "pluginspage='http://microsoft.com/windows/mediaplayer/en/download/'";
            strReturn += "id='mediaPlayer' name='mediaPlayer' displaysize='4' autosize='-1'";
            strReturn += "bgcolor='darkblue' showcontrols=\"true\" showtracker='-1'";
            strReturn += "showdisplay='0' showstatusbar='-1' videoborder3d='-1' width=\"" + objPageVideo.width.toString() + "\" height=\"" + objPageVideo.height.toString() + "\"";
            strReturn += "src=\"" + objPageVideo.url + "\" autostart=\"" + strAutoStart + "\" designtimesp='5311' loop=\"true\">";
            strReturn += "</embed>";
            strReturn += "</object>";
            strReturn += "</div>";
        }
    }
    
    return strReturn;
}



OnlineMagPageLinks = function(pobjOnlineMagPage, pstrOnlineMagPageLinks)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageLinks.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageLinks.split(rowSeperator);
    
    
    for (var intLinkIndex = 0; intLinkIndex < arData.length; ++intLinkIndex)
    {   
        // only add links to thsi page
        if (arData[intLinkIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageLink(this, arData[intLinkIndex]);
    
            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageLinks.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageLink = function(pobjOnlineMagPageLinks, pstrOnlineMagPageLink)
{
    this.onlineMagPageLinks = pobjOnlineMagPageLinks;
        
    if (pstrOnlineMagPageLink.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageLink.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.url = arData[3];
    this.width = arData[4];
    this.height = arData[5];
    this.posLeft = arData[6];
    this.posTop = arData[7];
}

OnlineMagPageLink.prototype.clicked = function()
{
    var objWindow = window.open(this.url, "_blank", "");
    if (!objWindow)
    {
        showPopUpBlocked(this.url);        
    }

    this.linkVisit();
}

OnlineMagPageLink.prototype.linkVisit = function()
{
    var strUrl = "http://" + this.onlineMagPageLinks.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=4&VID=" + this.onlineMagPageLinks.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + "&LID=" + this.id + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });
}








OnlineMagPagePollAnswers = function(pobjOnlineMagPage, pstrOnlineMagPagePollAnswers)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;


    if (pstrOnlineMagPagePollAnswers.length == 0)
    {
        return;
    }

    var arData = pstrOnlineMagPagePollAnswers.split(rowSeperator);
    
    
    for (var intLinkIndex = 0; intLinkIndex < arData.length; ++intLinkIndex)
    {   
        // only add links to thsi page
        if (arData[intLinkIndex].split(columnSeperator)[7] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPagePollAnswer(this, arData[intLinkIndex]);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPagePollAnswers.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}



OnlineMagPagePollAnswer = function(pobjOnlineMagPagePollAnswers, pstrOnlineMagPagePollAnswer)
{
    this.onlineMagPagePollAnswers = pobjOnlineMagPagePollAnswers;
        
    if (pstrOnlineMagPagePollAnswer.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPagePollAnswer.split(columnSeperator);
    
    this.id = arData[0];
    this.onlineMagPagePollID = arData[1];
    this.anwser = arData[2];
    this.width = arData[3];
    this.height = arData[4];
    this.posLeft = arData[5];
    this.posTop = arData[6];
    this.onlineMagPageID = arData[7];
}

OnlineMagPagePollAnswer.prototype.clicked = function()
{    
    var strUrl = "http://" + this.onlineMagPagePollAnswers.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=5&VID=" + this.onlineMagPagePollAnswers.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + "&AID=" + this.id + "&callback=?";
    
    jQuery.fn.ptibox.showLoading();

    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                                                
                        //Output the poll results
                        var arTables = pobjReturn.returnData.split(tableSeperator);
                        var strVoted = arTables[0];
                        var strTitle = arTables[1];
                        var arRows = arTables[2].split(rowSeperator);
                        var intHighestPercentage = 1;
                        var strHTML = "";

                        for (var intPollAnswerIndex = 0; intPollAnswerIndex < arRows.length; ++intPollAnswerIndex)
                        {
                            if (parseInt(arRows[intPollAnswerIndex].split(columnSeperator)[3]) > intHighestPercentage) 
                            {
                                intHighestPercentage = parseInt(arRows[intPollAnswerIndex].split(columnSeperator)[3]);
                            }
                        }

                        strHTML += "<div class=\"ptipoll\">";  
                        strHTML += "<div class=\"pti_title\">" + htmlEncode(strTitle) + "</div>"

                        for (var intPollAnswerIndex = 0; intPollAnswerIndex < arRows.length; ++intPollAnswerIndex) {
                            var arCols = arRows[intPollAnswerIndex].split(columnSeperator);
                            var intID = parseInt(arCols[0]);
                            var strAnswer = arCols[1];
                            var intPercentage = parseInt(arCols[3]);
                            var intPercentageWidth = parseInt(intPercentage * (380 / intHighestPercentage)) + 1;


                            strHTML += "<div class=\"pti_answer\">" + htmlEncode(strAnswer) + " <span>(" + intPercentage.toString() + "%)</span></div>"
                            //strHTML += "<div class=\"pti_bar\" style=\"width: " + intPercentageWidth.toString() + "px;\">&nbsp;</div>"
                            strHTML += "<div id=\"pti_bar" + intID.toString() + "\" class=\"pti_bar\" style=\"width: 0%;\">&nbsp;</div>"
                        }
                        strHTML += "</div>";

                        jQuery.fn.ptibox.hideLoading();
                        this.ptiboxItems = new Array();
                        this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject(strHTML, "", "", strTitle, null, 450, 450));    
                        jQuery().ptibox({itemArray: this.ptiboxItems, 
                                         showInfoButton         : false, 
                                         showPlayButton         : false,
                                         callbackOnShow         : function() {
                                         
                                                                    for (var intPollAnswerIndex = 0; intPollAnswerIndex < arRows.length; ++intPollAnswerIndex) {
                                                                        var arCols = arRows[intPollAnswerIndex].split(columnSeperator);
                                                                        var intID = parseInt(arCols[0]);
                                                                        var intPercentage = parseInt(arCols[3]);
                                                                        var strPlusPercentage = "+=" + intPercentage.toString() + "%";
                                                                        
                                                                        jQuery("#pti_bar" + intID.toString()).animate({width: strPlusPercentage}, "slow");
                                                                    }
                                                                }
                                        });
                        
                        
                    });
}











OnlineMagPageArticles = function(pobjOnlineMagPage, pstrOnlineMagPageArticles)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageArticles.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageArticles.split(rowSeperator);
    
    
    for (var intArticleIndex = 0; intArticleIndex < arData.length; ++intArticleIndex)
    {   
        // only add Articles to thsi page
        if (arData[intArticleIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageArticle(this, arData[intArticleIndex]);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageArticles.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageArticle = function(pobjOnlineMagPageArticles, pstrOnlineMagPageArticle)
{
    this.onlineMagPageArticles = pobjOnlineMagPageArticles;
        
    if (pstrOnlineMagPageArticle.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageArticle.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.width = arData[3];
    this.height = arData[4];
    this.posLeft = arData[5];
    this.posTop = arData[6];
    
    var strUrl = "http://" + this.onlineMagPageArticles.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=6&VID=" + this.onlineMagPageArticles.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + "&AID=" + this.id + "&callback=?";    
    this.ptiboxItems = new Array();
    this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject("", "", strUrl, this.title, null, 500, 500));    
}

OnlineMagPageArticle.prototype.clicked = function()
{
    jQuery().ptibox({itemArray: this.ptiboxItems, 
                     showInfoButton         : false, 
                     showPlayButton         : false
                    });
      
}







OnlineMagPageVideos = function(pobjOnlineMagPage, pstrOnlineMagPageVideos)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageVideos.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageVideos.split(rowSeperator);
    
    
    for (var intVideoIndex = 0; intVideoIndex < arData.length; ++intVideoIndex)
    {   
        // only add Videos to thsi page
        if (arData[intVideoIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageVideo(this, arData[intVideoIndex]);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageVideos.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageVideo = function(pobjOnlineMagPageVideos, pstrOnlineMagPageVideo)
{
    this.onlineMagPageVideos = pobjOnlineMagPageVideos;
        
    if (pstrOnlineMagPageVideo.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageVideo.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.url = arData[3];
    this.width = arData[4];
    this.height = arData[5];
    this.posLeft = arData[6];
    this.posTop = arData[7];
    
    if (arData[8] == "true")
    {
        this.autoPlay =  true;
    }
    else
    {
        this.autoPlay =  false;
    }
}


OnlineMagPageVideo.prototype.VideoPlayed = function()
{
    var strUrl = "http://" + this.onlineMagPageVideos.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=7&VID=" + this.onlineMagPageVideos.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + "&LID=" + this.id + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });
}






OnlineMagPageJumps = function(pobjOnlineMagPage, pstrOnlineMagPageJumps)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageJumps.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageJumps.split(rowSeperator);
    
    
    for (var intJumpIndex = 0; intJumpIndex < arData.length; ++intJumpIndex)
    {   
        // only add Jumps to thsi page
        if (arData[intJumpIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageJump(this, arData[intJumpIndex]);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageJumps.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageJump = function(pobjOnlineMagPageJumps, pstrOnlineMagPageJump)
{
    this.onlineMagPageJumps = pobjOnlineMagPageJumps;
        
    if (pstrOnlineMagPageJump.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageJump.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.pageNo = parseInt(arData[3]);
    this.width = arData[4];
    this.height = arData[5];
    this.posLeft = arData[6];
    this.posTop = arData[7];
}

OnlineMagPageJump.prototype.clicked = function()
{
    ptiGotoPage(this.onlineMagPageJumps.onlineMagPage.onlineMagPages.onlineMagIssue.containerElementID, this.pageNo);
}





OnlineMagPageComps = function(pobjOnlineMagPage, pstrOnlineMagPageComps, pstrOnlineMagPageCompAnswers)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageComps.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageComps.split(rowSeperator);
    
    
    for (var intCompIndex = 0; intCompIndex < arData.length; ++intCompIndex)
    {   
        // only add Comps to thsi page
        if (arData[intCompIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageComp(this, arData[intCompIndex], pstrOnlineMagPageCompAnswers);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageComps.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageComp = function(pobjOnlineMagPageComps, pstrOnlineMagPageComp, pstrOnlineMagPageCompAnswers)
{
    this.onlineMagPageComps = pobjOnlineMagPageComps;
        
    if (pstrOnlineMagPageComp.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageComp.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.captureEmail = parseInt(arData[3]);
    this.width = arData[4];
    this.height = arData[5];
    this.posLeft = arData[6];
    this.posTop = arData[7];

    this.onlineMagPageCompAnswers = new OnlineMagPageCompAnswers(this, pstrOnlineMagPageCompAnswers);    
}

OnlineMagPageComp.prototype.clicked = function()
{
    var strHTML = "";
    var strButton = "";
    var intLastQuestionID = 0
    var intQuestionCount = 0
    var objAnswer;
    
    strHTML += "<div class=\"pticomp\">";  
    strHTML += "<div class=\"pti_title\">" + htmlEncode(this.title) + "</div>"
    
    for (var intAnswerIndex = 0; intAnswerIndex < this.onlineMagPageCompAnswers.length; ++intAnswerIndex)
    {   
        objAnswer = this.onlineMagPageCompAnswers.items[intAnswerIndex];
        
        if (objAnswer.onlineMagPageCompQuestionID != intLastQuestionID)
        {
            intQuestionCount += 1;
            strHTML += "<div class=\"pti_question\">" + htmlEncode(intQuestionCount.toString() +  ". " + objAnswer.question) + "</div>";
        }
        
        strHTML += "<div class=\"pti_answer\"><label for=\"pti_rdoAnswer" + objAnswer.id.toString() + "\"><input id=\"pti_rdoAnswer" + objAnswer.id.toString() + "\" name=\"Question" + objAnswer.onlineMagPageCompQuestionID.toString() + "\" type=\"radio\" value=\"" + objAnswer.id.toString() + "\" />" + htmlEncode(objAnswer.answer) + "</label></div>";
        
        intLastQuestionID = objAnswer.onlineMagPageCompQuestionID
    }
    
    if (this.captureEmail == 2 || this.captureEmail == 3) //Email optional or required
    {
        intQuestionCount += 1;
        strHTML += "<div class=\"pti_question\">" + htmlEncode(intQuestionCount.toString()) +  ". Please enter your email address</div>";
        strHTML += "<div class=\"pti_answer\"><input id=\"pti_txtCompEmail\" name=\"pti_txtCompEmail\" class=\"CompEmail\" type=\"text\" value=\"\" /></div>";
    }
            
    strHTML += "</div>";
    
    strButton += "<a id=\"pti_submit\"><span>Submit</span></a>";
    
    this.ptiboxItems = new Array();
    this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject(strHTML, strButton, "", this.title, null, 500, 500));    
    jQuery().ptibox({itemArray              : this.ptiboxItems, 
                     showInfoButton         : false, 
                     showPlayButton         : false
                    });
    
    jQuery("#pti_submit").unbind().bind("click", createDelegate(this, this.submit));
}


OnlineMagPageComp.prototype.submit = function()
{
    //Get the answers for each question and ensure that all questions have been answered   
    var strHTML = "";
    var blnAllQuestionsAnswered = true;
    var intQuestionCount = 0;
    var objAnswer;
    var strSelectedEmail = "";
    var strSelectedIDs = "";


    if (this.onlineMagPageCompAnswers.length > 0)
    {
        var intLastQuestionID = this.onlineMagPageCompAnswers.items[0].onlineMagPageCompQuestionID;
        var blnLastQuestionAnswered = false;
        
        for (var intAnswerIndex = 0; intAnswerIndex < this.onlineMagPageCompAnswers.length; ++intAnswerIndex)
        {   
            objAnswer = this.onlineMagPageCompAnswers.items[intAnswerIndex];
            
            
            if (objAnswer.onlineMagPageCompQuestionID != intLastQuestionID)
            {
                if (blnLastQuestionAnswered == false)
                {
                    blnAllQuestionsAnswered = false;
                }
                
                intQuestionCount += 1;
                blnLastQuestionAnswered = false;
            }
            
            if (document.getElementById("pti_rdoAnswer" + objAnswer.id.toString()).checked)
            {
                blnLastQuestionAnswered = true;
                
                if (strSelectedIDs.length == 0)
                {
                    strSelectedIDs += objAnswer.id.toString();
                }
                else
                {
                    strSelectedIDs += "," + objAnswer.id.toString();            
                }
            }
                    
            intLastQuestionID = objAnswer.onlineMagPageCompQuestionID;
        }

        if (blnLastQuestionAnswered == false)
        {
            blnAllQuestionsAnswered = false;
        }
    }

    if (this.captureEmail == 2 || this.captureEmail == 3) //Email optional or required
    {
        strSelectedEmail = document.getElementById("pti_txtCompEmail").value;

        if (this.captureEmail == 3 && strSelectedEmail.length == 0) //Email optional or required
        {
            blnAllQuestionsAnswered = false;            
        }
    }

    if (blnAllQuestionsAnswered == false)
    {
        alert("All questions must be answered");
    }
    else
    {
        jQuery("#pti_submit").fadeOut();
    
        var strUrl = "http://" + this.onlineMagPageComps.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=8&VID=" + this.onlineMagPageComps.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + 
                     "&CID=" + this.id + 
                     "&AIDS=" + strSelectedIDs + 
                     "&E=" + encodeURI(strSelectedEmail) + 
                     "&callback=?";

        jQuery.fn.ptibox.showLoading();
                                    
        jQuery.getJSON( strUrl, 
                        function(pobjReturn){
                            if (pobjReturn.returnStatus != 1)
                            {
                                ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                                jQuery("#pti_submit").fadeIn();
                                return;
                            }
                            
                            jQuery("#pti_submit").unbind();
                            
                            var strResult = ""
                            strResult += "<div class=\"pticompresult\">" + pobjReturn.returnData + "</div>"

                            jQuery.fn.ptibox.showItem(jQuery.fn.ptibox.generateItemObject(strResult, "", "", this.title, null, 400, 400));
                        });
    }
}







OnlineMagPageCompAnswers = function(pobjOnlineMagPageComp, pstrOnlineMagPageCompAnswers)
{
    this.onlineMagPageComp = pobjOnlineMagPageComp;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageCompAnswers.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageCompAnswers.split(rowSeperator);
    
    
    for (var intAnswerIndex = 0; intAnswerIndex < arData.length; ++intAnswerIndex)
    {   
        // only add Answers to thsi Comp
        if (arData[intAnswerIndex].split(columnSeperator)[1] == this.onlineMagPageComp.id)
        {
            this.items[this.items.length] = new OnlineMagPageCompAnswer(this, arData[intAnswerIndex]);

            this.onlineMagPageComp.onlineMagPageComps.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageCompAnswers.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageCompAnswer = function(pobjOnlineMagPageCompAnswers, pstrOnlineMagPageCompAnswer)
{
    this.onlineMagPageCompAnswers = pobjOnlineMagPageCompAnswers;
        
    if (pstrOnlineMagPageCompAnswer.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageCompAnswer.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageCompID = arData[1];
    this.onlineMagPageCompQuestionID = arData[2];
    this.question = arData[3];
    this.answer = arData[4];
}









OnlineMagPageGalleries = function(pobjOnlineMagPage, pstrOnlineMagPageGalleries, pstrOnlineMagPageGalleryPhotos)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageGalleries.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageGalleries.split(rowSeperator);
    
    
    for (var intGalleryIndex = 0; intGalleryIndex < arData.length; ++intGalleryIndex)
    {   
        // only add Galleries to thsi page
        if (arData[intGalleryIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageGallery(this, arData[intGalleryIndex], pstrOnlineMagPageGalleryPhotos);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageGalleries.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageGallery = function(pobjOnlineMagPageGalleries, pstrOnlineMagPageGallery, pstrOnlineMagPageGalleryPhotos)
{
    this.onlineMagPageGalleries = pobjOnlineMagPageGalleries;
        
    if (pstrOnlineMagPageGallery.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageGallery.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.width = arData[3];
    this.height = arData[4];
    this.posLeft = arData[5];
    this.posTop = arData[6];
    
    
    var arPhotoData = pstrOnlineMagPageGalleryPhotos.split(rowSeperator);
    
    /*
    var intRowCount = 0;
    var strPhotos = "";

    for (var intPhotoIndex = 0; intPhotoIndex < arPhotoData.length; ++intPhotoIndex)
    {   
        // only add Galleries to thsi page
        if (arPhotoData[intPhotoIndex].split(columnSeperator)[1] == this.id)
        {
            intRowCount+=1;
            if (intRowCount > 1)
            {
                strPhotos += rowSeperator;
            }
            
            strPhotos += arPhotoData[intPhotoIndex];
        }
    }

    this.photos = strPhotos;
    */

    this.ptiboxItems = new Array();

    for (var intPhotoIndex = 0; intPhotoIndex < arPhotoData.length; ++intPhotoIndex)
    {   
        // only add Galleries to this page
        var arPhoto = arPhotoData[intPhotoIndex].split(columnSeperator);
        if (arPhoto[1] == this.id)
        {
            this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject("", "", arPhoto[2], arPhoto[3], null, null, null));
        }
    }                                     
}


OnlineMagPageGallery.prototype.clicked = function()
{    
    jQuery().ptibox({itemArray: this.ptiboxItems});
    
    this.GalleryViewed();
}

OnlineMagPageGallery.prototype.GalleryViewed = function()
{
    var strUrl = "http://" + this.onlineMagPageGalleries.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=9&VID=" + this.onlineMagPageGalleries.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + "&GID=" + this.id + "&callback=?";
    
    jQuery.getJSON( strUrl, 
                    function(pobjReturn)
                    {
                        if (pobjReturn.returnStatus != 1)
                        {
                            ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                            return;
                        }
                    });
}








OnlineMagPageForwards = function(pobjOnlineMagPage, pstrOnlineMagPageForwards)
{
    this.onlineMagPage = pobjOnlineMagPage;
    this.items = new Array();
    this.length = 0;

    if (pstrOnlineMagPageForwards.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageForwards.split(rowSeperator);
    
    
    for (var intForwardIndex = 0; intForwardIndex < arData.length; ++intForwardIndex)
    {   
        // only add Forwards to thsi page
        if (arData[intForwardIndex].split(columnSeperator)[1] == this.onlineMagPage.id)
        {
            this.items[this.items.length] = new OnlineMagPageForward(this, arData[intForwardIndex]);

            this.onlineMagPage.onlineMagPages.onlineMagIssue.allOnlineMagPageForwards.push(this.items[this.items.length - 1]);
        }
    }

    this.length = this.items.length;
}




OnlineMagPageForward = function(pobjOnlineMagPageForwards, pstrOnlineMagPageForward)
{
    this.onlineMagPageForwards = pobjOnlineMagPageForwards;
        
    if (pstrOnlineMagPageForward.length == 0)
    {
        return;
    }
    
    var arData = pstrOnlineMagPageForward.split(columnSeperator);

    this.id = arData[0];
    this.onlineMagPageID = arData[1];
    this.title = arData[2];
    this.width = arData[3];
    this.height = arData[4];
    this.posLeft = arData[5];
    this.posTop = arData[6];
}

OnlineMagPageForward.prototype.clicked = function()
{
    /* might need this code
    var newdiv = document.createElement("div");
    newdiv.innerHTML = xhr.responseText;
    var container = document.getElementById("container");
    container.appendChild(newdiv);
    */
    
    var strHTML = "";
    var strButton = "";
    var intLastQuestionID = 0
    var intQuestionCount = 0
    var objAnswer;
    

    strHTML += "<div class=\"ptiforward\">";

    strHTML += "<div class=\"pti_title\">" + htmlEncode(this.title) + "</div>";

    strHTML += "<div class=\"pti_question\">Your name</div>";
    strHTML += "<div class=\"pti_answer\"><input id=\"pti_txtForwardFromName\" name=\"pti_txtForwardFromName\" class=\"pti_forwardname\" type=\"text\" vcard_name=\"vCard.Name\" value=\"\" /></div>";

    strHTML += "<div class=\"pti_question\">Your email address</div>";
    strHTML += "<div class=\"pti_answer\"><input id=\"pti_txtForwardFromEmail\" name=\"pti_txtForwardFromEmail\" class=\"pti_forwardemail\" type=\"text\" vcard_name=\"vCard.Email\" value=\"\" /></div>";

    strHTML += "<div class=\"pti_question\">Your friend\'s email address</div>";
    strHTML += "<div class=\"pti_answer\"><input id=\"pti_txtForwardToEmail\" name=\"pti_txtForwardToEmail\" class=\"pti_forwardemail\" type=\"text\" vcard_name=\"vCard.Email\" value=\"\" /></div>";

    strHTML += "<div class=\"pti_question\">Message (optional)</div>";
    strHTML += "<div class=\"pti_answer\"><textarea id=\"pti_txtForwardMessage\" name=\"pti_txtForwardMessage\" class=\"pti_forwardmessage\" rows=\"5\" cols=\"10\"></textarea></div>";
        
    strHTML += "</div>";
    
    strButton += "<a id=\"pti_submit\"><span>Submit</span></a>";
    
    this.ptiboxItems = new Array();
    this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject(strHTML, strButton, "", this.title, null, 500, 440));    
    jQuery().ptibox({itemArray              : this.ptiboxItems, 
                     showInfoButton         : false, 
                     showPlayButton         : false
                    });
    
    jQuery("#pti_submit").unbind().bind("click", createDelegate(this, this.submit));            
}


OnlineMagPageForward.prototype.submit = function()
{
    //Get the answers for each question and ensure that all questions have been answer    
    var strHTML = "";
    var strFromName = "";
    var strFromEmail = "";
    var strToEmail = "";
    var strMessage = "";
    
    
    strFromName = document.getElementById("pti_txtForwardFromName").value;
    strFromEmail = document.getElementById("pti_txtForwardFromEmail").value;
    strToEmail = document.getElementById("pti_txtForwardToEmail").value;
    strMessage = document.getElementById("pti_txtForwardMessage").value;
    
    if (strFromName.length == 0) 
    {
        alert("Your name must be provided.");
    }
    else if (validateEmail(strFromEmail, true, false) == false) 
    {
        alert("Your email address must be provided and must be valid");
    }
    else if (validateEmail(strToEmail, true, false) == false)
    {
        alert("Your friend's email address must be provided and must be valid");
    }
    else
    {        
        jQuery("#pti_submit").fadeOut();

        var strUrl = "http://" + this.onlineMagPageForwards.onlineMagPage.onlineMagPages.onlineMagIssue.host + "/PTI/JSON/PTI.aspx?M=10&VID=" + this.onlineMagPageForwards.onlineMagPage.onlineMagPages.onlineMagIssue.onlineMagIssueVisitID.toString() + 
                     "&FID=" + this.id + 
                     "&FN=" + encodeURI(strFromName) + 
                     "&FE=" + encodeURI(strFromEmail) + 
                     "&TE=" + encodeURI(strToEmail) + 
                     "&MG=" + encodeURI(strMessage) + 
                     "&callback=?";
                
        jQuery.fn.ptibox.showLoading();

        jQuery.getJSON( strUrl, 
                        function(pobjReturn)
                        {
                            if (pobjReturn.returnStatus != 1)
                            {
                                ptiTrace("JSON ERROR: " + pobjReturn.returnMessage);
                                jQuery("#pti_submit").fadeIn();
                                return;
                            }

                            jQuery("#pti_submit").unbind();
                            
                            var strResult = ""
                            strResult += "<div class=\"ptiforward\">";  
                            strResult += "<div class=\"pti_result\">Thank you for using forward to a friend</div>"
                            strResult += "</div>";  

                            jQuery.fn.ptibox.showItem(jQuery.fn.ptibox.generateItemObject(strResult, "", "", this.title, null, 400, 400));
                        });
    }

    return false;
}











/* GENERAL FUNCTIONS */
function ptiGetDefaultConfig()
{
	var objConfig = new Object();

    objConfig.useUrlParams = false;
    objConfig.navBar = "top";
    objConfig.hostIncWWW = "www.magazine-results.co.uk";
    objConfig.htmlhostIncWWW = window.location.host;
    
    if (objConfig.htmlhostIncWWW.indexOf(":") >= 0)
    {
        objConfig.htmlhostIncWWW = objConfig.htmlhostIncWWW.substr(0, objConfig.htmlhostIncWWW.indexOf(":"));
    }    

	// Page Flip Specific	
	objConfig.scaleContent = false;
	objConfig.preserveProportions = false;
	objConfig.centerContent = true;
	objConfig.hardcover = false;
	objConfig.hardcoverThickness = 2;
	objConfig.hardcoverEdgeColor = "0xCCCCCC";
	objConfig.highlightHardcover = true;
	objConfig.frameWidth = 0;
	objConfig.frameColor = "0xFFFFFF";
	objConfig.frameAlpha = 100;
	objConfig.firstPage = 0;
	objConfig.alwaysOpened = false;
	objConfig.autoFlip = 50;
	objConfig.navigationFlipOffset = 100;
	objConfig.flipOnClick = true;
	objConfig.handOverCorner = true;
	objConfig.handOverPage = false;
	objConfig.staticShadowsType = "Asymmetric";
	objConfig.staticShadowsDepth = 1;
	objConfig.staticShadowsLightColor = "0xCCCCCC";
	objConfig.staticShadowsDarkColor = "0x666666";
	objConfig.shadowsDepth = 2;
	objConfig.dynamicShadowsLightColor = "0xFFFFFF";
	objConfig.dynamicShadowsDarkColor = "0x000000";
	objConfig.moveSpeed = 3;
	objConfig.closeSpeed = 3;
	objConfig.gotoSpeed = 3;
	objConfig.rigidPageSpeed = 3;
	objConfig.flipSound = "02.mp3";
	objConfig.hardcoverSound = "02.mp3";
	objConfig.preloaderType = "Progress Bar";
	objConfig.pageBack = "0xFFFFFF";
	objConfig.backgroundSymbol = "";
	objConfig.loadOnDemand = true;
	objConfig.allowPagesUnload = true;
	objConfig.cachePages = true;
	objConfig.cacheSize = 40;
	objConfig.userPreloaderId = "";
	objConfig._showUnderlyingPages = false; // !!!
	objConfig.playOnDemand = true;
	objConfig.globalFreezeOnFlip = false;
	objConfig.globalDark = false;
	objConfig.globalSmooth = false;
	objConfig.globalRigid = false;
	objConfig.flipCornerStyle = "manualy";
	objConfig.flipCornerPosition = "bottom-right";
	objConfig.flipCornerAmount = 150;
	objConfig.flipCornerAngle = 45;
	objConfig.flipCornerRelease = true;
	objConfig.flipCornerVibrate = true;
	objConfig.flipCornerPlaySound = true;

	return objConfig;
}



function htmlEncode(strPlainText) {
    var str = new String(strPlainText);

    return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
}


function htmlDecode(strEnclodedText) {
    var str = new String(strEnclodedText);

    return str.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"");
} 


function showPopUpBlocked(pstrUrl)
{
    var strHTML = "";

    strHTML += "<div class=\"ptipopupblocked\">";
    strHTML += "<div class=\"pti_title\">Pop-Up Blocked</div>";
    strHTML += "<div class=\"pti_message\">Your web browser has been set to block pop-ups.  Please click <a href=\"" + pstrUrl + "\" target=\"_blank\">here</a> to view the link.</div>";
    strHTML += "</div>";

    this.ptiboxItems = new Array();
    this.ptiboxItems.push(jQuery.fn.ptibox.generateItemObject(strHTML, "", "", "Pop-Up Blocked", null, 300, 200));    
    jQuery().ptibox({itemArray              : this.ptiboxItems, 
                     showInfoButton         : false, 
                     showPlayButton         : false
                    });
}

function createDelegate(instance, method)
{
    return function() {
        return method.apply(instance, arguments);
    }
}

function getByID(parObjects, pintID)
{
    var objReturn;

    for (var intObjectIndex = 0; intObjectIndex < parObjects.length; ++intObjectIndex)
    {   
        // only add Forwards to thsi page
        if (parObjects[intObjectIndex].id == pintID)
        {
            objReturn = parObjects[intObjectIndex];
        }
    }
    
    return objReturn;
}

function getIndexByID(parObjects, pintID)
{
    var intReturn = -1;

    for (var intObjectIndex = 0; intObjectIndex < parObjects.length; ++intObjectIndex)
    {   
        // only add Forwards to thsi page
        if (parObjects[intObjectIndex].id == pintID)
        {
            intReturn = intObjectIndex;
        }
    }
    
    return intReturn;
}

function validateEmail(pstrEmail,pblnRequired,pblnShowMessage)
{
    if (pstrEmail == '' && pblnRequired) {
       if (pblnShowMessage) alert('email address is required');
       return false;
    }
    if (pstrEmail == '') return true;
    var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
    for (i=0; i<invalidChars.length; i++) {
       if (pstrEmail.indexOf(invalidChars.charAt(i),0) > -1) {
          if (pblnShowMessage) alert('email address contains invalid characters');
          return false;
       }
    }
    for (i=0; i<pstrEmail.length; i++) {
       if (pstrEmail.charCodeAt(i)>127) {
          if (pblnShowMessage) alert("email address contains invalid characters");
          return false;
       }
    }

    var atPos = pstrEmail.indexOf('@',0);
    if (atPos == -1) {
       if (pblnShowMessage) alert('email address must contain an @');
       return false;
    }
    if (atPos == 0) {
       if (pblnShowMessage) alert('email address must not start with @');
       return false;
    }
    if (pstrEmail.indexOf('@', atPos + 1) > - 1) {
       if (pblnShowMessage) alert('email address must contain only one @');
       return false;
    }
    if (pstrEmail.indexOf('.', atPos) == -1) {
       if (pblnShowMessage) alert('email address must contain a period in the domain name');
       return false;
    }
    if (pstrEmail.indexOf('@.',0) != -1) {
       if (pblnShowMessage) alert('period must not immediately follow @ in email address');
       return false;
    }
    if (pstrEmail.indexOf('.@',0) != -1){
       if (pblnShowMessage) alert('period must not immediately precede @ in email address');
       return false;
    }
    if (pstrEmail.indexOf('..',0) != -1) {
       if (pblnShowMessage) alert('two periods must not be adjacent in email address');
       return false;
    }
    return true;
}






//swobject
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();

//jQuery.ptibox
;(function(jQuery) {

	jQuery.fn.fixPNG = function() {
		return this.each(function () {
			var image = jQuery(this).css('backgroundImage');

			if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
				image = RegExp.$1;
				jQuery(this).css({
					'backgroundImage': 'none',
					'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + (jQuery(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')"
				}).each(function () {
					var position = jQuery(this).css('position');
					if (position != 'absolute' && position != 'relative')
						jQuery(this).css('position', 'relative');
				});
			}
		});
	};

	var elem, opts, busy = false, playing = false, imagePreloader = new Image, loadingTimer, loadingFrame = 1, imageRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i;
	var isIE = (jQuery.browser.msie && parseInt(jQuery.browser.version.substr(0,1)) < 7);

	jQuery.fn.ptibox = function(settings) {
		settings = jQuery.extend({}, jQuery.fn.ptibox.defaults, settings);
                
		var matchedGroup = this;

		function _initialize() {
			elem = this;
			opts = settings;

			_start();

			return false;
		};

		function _start() {
			if (busy) return;

			if (jQuery.isFunction(opts.callbackOnStart)) {
				opts.callbackOnStart();
			}
            			
			if (settings.itemArray.length > 0) {
				opts.itemArray = settings.itemArray;
			    opts.itemCurrent	= 0;

			} else {
			    opts.itemArray		= [];
			    opts.itemCurrent	= 0;

				var item = {};

				if (!elem.rel || elem.rel == '') {
					var item = {href: elem.href, title: elem.title};

					if (jQuery(elem).children("img:first").length) {
						item.orig = jQuery(elem).children("img:first");
					}
                                        
					opts.itemArray.push( item );

				} else {
					
					var subGroup = jQuery(matchedGroup).filter("a[rel=" + elem.rel + "]");

					var item = {};

					for (var i = 0; i < subGroup.length; i++) {
						item = {href: subGroup[i].href, title: subGroup[i].title};

						if (jQuery(subGroup[i]).children("img:first").length) {
							item.orig = jQuery(subGroup[i]).children("img:first");
						}

						opts.itemArray.push( item );
					}

					while ( opts.itemArray[ opts.itemCurrent ].href != elem.href ) {
						opts.itemCurrent++;
					}
				}
			}

			if (opts.overlayShow) {
				if (isIE) {
					//jQuery('embed, object, select').css('visibility', 'hidden');
					jQuery('select').css('visibility', 'hidden');
				}

				jQuery("#ptibox_overlay").css('opacity', opts.overlayOpacity).show();
			}

			jQuery.fn.ptibox.changeItem();
		};

        _initialize();
        
		return this.unbind('click');
	};


	jQuery.fn.ptibox.changeItem =  function() {
		jQuery("#ptibox_right, #ptibox_left, #ptibox_close, #ptibox_info, #ptibox_play, #ptibox_title, #ptibox_caption").hide();

		var href = opts.itemArray[opts.itemCurrent].href;
		var htmlContent = opts.itemArray[opts.itemCurrent].htmlContent;
		var htmlButton = opts.itemArray[opts.itemCurrent].htmlButton;
        var width = opts.frameWidth;
        var height = opts.frameHeight;
		
		if (opts.itemArray[opts.itemCurrent].frameWidth != null)
		{
		    width = opts.itemArray[opts.itemCurrent].frameWidth;
        }
        
		if (opts.itemArray[opts.itemCurrent].frameHeight != null)
		{
		    height = opts.itemArray[opts.itemCurrent].frameHeight;
        }
        


        if (htmlContent == null)
        {
            htmlContent = "";
        }

        if (htmlContent.length > 0)
        {
            //htmlContent as parameter            
			jQuery.fn.ptibox.setContent('<div id="ptibox_div"><div id="ptibox_div_inner">' + htmlContent + '</div></div>', htmlButton, width, height);                
        }
		else if (href.match(/#/))
		{
		    // Inline Content
			var target = window.location.href.split('#')[0]; target = href.replace(target, ''); target = target.substr(target.indexOf('#'));

			jQuery.fn.ptibox.setContent('<div id="ptibox_div"><div id="ptibox_div_inner">' + jQuery(target).html() + '</div></div>', htmlButton, width, height);

		}
		else if (href.match(imageRegExp))
		{
		    // Images
			imagePreloader = new Image; imagePreloader.src = href;

			if (imagePreloader.complete)
			{
				jQuery.fn.ptibox.proceedImage();

			} 
			else
			{
				jQuery.fn.ptibox.showLoading();

				jQuery(imagePreloader).unbind().bind('load', function() {
                    jQuery.fn.ptibox.hideLoading();
					jQuery.fn.ptibox.proceedImage();
				});
			}
        }
        else if (href.match("iframe") /*|| elem.className.indexOf("iframe") >= 0*/)
        {
	        //iframe
		    jQuery.fn.ptibox.setContent('<iframe id="ptibox_frame" onload="jQuery.fn.ptibox.showIframe()" name="ptibox_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + href + '"></iframe>', htmlButton, width, height);
        }
        else if (href.match("callback"))
        {
	        //jsonp
			jQuery.fn.ptibox.showLoading();

			jQuery.getJSON(href, function(data) {
                if (data.returnStatus != 1)
                {
                    ptiTrace("JSON ERROR: " + data.returnMessage);
                    return;
                }
			
                jQuery.fn.ptibox.hideLoading();
				jQuery.fn.ptibox.setContent( '<div id="ptibox_ajax"><div id="ptibox_ajax_inner">' + data.returnData + '</div></div>', htmlButton, width, height );
			});				
		}
		else
		{
		    //regular ajax
			jQuery.fn.ptibox.showLoading();

			jQuery.get(href, function(data) {
                jQuery.fn.ptibox.hideLoading();
				jQuery.fn.ptibox.setContent( '<div id="ptibox_ajax">' + data + '</div>', htmlButton, width, height );
			});
		}
	};

	jQuery.fn.ptibox.proceedImage =  function() {
		if (opts.imageScale) {
			var w = jQuery.fn.ptibox.getViewport();

			var r = Math.min(Math.min(w[0] - 36, imagePreloader.width) / imagePreloader.width, Math.min(w[1] - 60, imagePreloader.height) / imagePreloader.height);

			var width = Math.round(r * imagePreloader.width);
			var height = Math.round(r * imagePreloader.height);

		} else {
			var width = imagePreloader.width;
			var height = imagePreloader.height;
		}

		jQuery.fn.ptibox.setContent('<img alt="" id="ptibox_img" src="' + imagePreloader.src + '" />', "", width, height);
	};

	jQuery.fn.ptibox.preloadNeighborImages =  function() {
		if ((opts.itemArray.length -1) > opts.itemCurrent) {
			var href = opts.itemArray[opts.itemCurrent + 1].href;

			if (href.match(imageRegExp)) {
				objNext = new Image();
				objNext.src = href;
			}
		}

		if (opts.itemCurrent > 0) {
			var href = opts.itemArray[opts.itemCurrent -1].href;

			if (href.match(imageRegExp)) {
				objNext = new Image();
				objNext.src = href;
			}
		}
	};

	jQuery.fn.ptibox.setContent =  function(value, button, width, height) {
		busy = true;

		var pad = opts.padding;
		var heightbutton = 40;
		var heightdiv = (height-heightbutton);


		if (isIE) {
			jQuery("#ptibox_content")[0].style.removeExpression("height");
			jQuery("#ptibox_content")[0].style.removeExpression("width");
		}

		if (pad > 0) {
			width	+= pad * 2;
			height	+= pad * 2;

			jQuery("#ptibox_content").css({
				'top'		: pad + 'px',
				'right'		: pad + 'px',
				'bottom'	: pad + 'px',
				'left'		: pad + 'px',
				'width'		: 'auto',
				'height'	: 'auto'
			});

			if (isIE) {
				jQuery("#ptibox_content")[0].style.setExpression('height', '(this.parentNode.clientHeight - 20)');
				jQuery("#ptibox_content")[0].style.setExpression('width', '(this.parentNode.clientWidth - 20)');
			}

		} else {
			jQuery("#ptibox_content").css({
				'top'		: 0,
				'right'		: 0,
				'bottom'	: 0,
				'left'		: 0,
				'width'		: '100%',
				'height'	: '100%'
			});
		}

		if (jQuery("#ptibox_outer").is(":visible") && width == jQuery("#ptibox_outer").width() && height == jQuery("#ptibox_outer").height()) {
			jQuery("#ptibox_content").fadeOut("fast", function() {
			    
			    jQuery("#ptibox_button").html(button);
			    
	            if (button)
	            {
	                // Resize Content
	                jQuery("#ptibox_div").height(heightdiv);
	                jQuery("#ptibox_button").height(heightbutton);
	                jQuery("#ptibox_button").css({'display':'block'});
	            }
	            else
	            {
	                jQuery("#ptibox_button").css({'display':'none'});	            
	            }
	            
				jQuery("#ptibox_content").empty().append(jQuery(value)).fadeIn("normal", function() {
					jQuery.fn.ptibox.finish();
				});				
			});

            
			return;
		}

		var w = jQuery.fn.ptibox.getViewport();

		var itemLeft	= (width + 36)	> w[0] ? w[2] : (w[2] + Math.round((w[0] - width - 36) / 2));
		var itemTop		= (height + 50)	> w[1] ? w[3] : (w[3] + Math.round((w[1] - height - 50) / 2));


		var itemOpts = {
			'left':		itemLeft,
			'top':		itemTop,
			'width':	width + 'px',
			'height':	height + 'px'
		};

		if (jQuery("#ptibox_outer").is(":visible")) {

			jQuery("#ptibox_content").fadeOut("normal", function() {
				jQuery("#ptibox_content").empty();
				jQuery("#ptibox_outer").animate(itemOpts, opts.zoomSpeedChange, opts.easingChange, function() {
			        jQuery("#ptibox_button").html(button);
	                if (button)
	                {
	                    // Resize Content
	                    jQuery("#ptibox_div").height(heightdiv);
	                    jQuery("#ptibox_button").height(heightbutton);
	                    jQuery("#ptibox_button").css({'display':'block'});
	                }
	                else
	                {
	                    jQuery("#ptibox_button").css({'display':'none'});
                    }
					jQuery("#ptibox_content").append(jQuery(value)).fadeIn("normal", function() {
						jQuery.fn.ptibox.finish();
					});                
				});
			});
			
		} else {
			if (opts.zoomSpeedIn > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
			    jQuery("#ptibox_button").html(button);
				jQuery("#ptibox_content").empty().append(jQuery(value));
	            if (button)
	            {
	                // Resize Content
	                jQuery("#ptibox_div").height(heightdiv);
                    jQuery("#ptibox_button").height(heightbutton);
                    jQuery("#ptibox_button").css({'display':'block'});
                }
                else
                {
                    jQuery("#ptibox_button").css({'display':'none'});
                }

				var orig_item	= opts.itemArray[opts.itemCurrent].orig;
				var orig_pos	= jQuery.fn.ptibox.getPosition(orig_item);

				jQuery("#ptibox_outer").css({
					'left':		(orig_pos.left - 18) + 'px',
					'top':		(orig_pos.top  - 18) + 'px',
					'width':	jQuery(orig_item).width(),
					'height':	jQuery(orig_item).height()
				});

				if (opts.zoomOpacity) {
					itemOpts.opacity = 'show';
				}

				jQuery("#ptibox_outer").animate(itemOpts, opts.zoomSpeedIn, opts.easingIn, function() {
					jQuery.fn.ptibox.finish();
				});

			} else {

			    jQuery("#ptibox_button").html(button);
				jQuery("#ptibox_content").hide().empty().append(jQuery(value)).show();
	            if (button)
	            {
	                // Resize Content
	                jQuery("#ptibox_div").height(heightdiv);
                    jQuery("#ptibox_button").height(heightbutton);
                    jQuery("#ptibox_button").css({'display':'block'});
                }
                else
                {
                    jQuery("#ptibox_button").css({'display':'none'});
                }
				jQuery("#ptibox_outer").css(itemOpts).fadeIn("normal", function() {
					jQuery.fn.ptibox.finish();
				});
			}
		}
	};

	jQuery.fn.ptibox.setNavigation =  function() {
        jQuery("#ptibox_info").hover(function() {
            jQuery('#ptibox_caption').css({ visibility: "visible" });
        }, function() {

            jQuery('#ptibox_caption').css({ visibility: "hidden" });
        });

		if (opts.itemCurrent != 0) {
			jQuery("#ptibox_left, #ptibox_left_ico").unbind().bind("click", function(e) {
				e.stopPropagation();

				opts.itemCurrent--;
				jQuery.fn.ptibox.changeItem();

				return false;
			});

			jQuery("#ptibox_left").show();
		}

		if (opts.itemCurrent != ( opts.itemArray.length -1)) {
			jQuery("#ptibox_right, #ptibox_right_ico").unbind().bind("click", function(e) {
				e.stopPropagation();

				opts.itemCurrent++;
				jQuery.fn.ptibox.changeItem();

				return false;
			});

			jQuery("#ptibox_right").show();
		}

        if (opts.itemArray.length > 1) {
            jQuery("#ptibox_play").unbind().bind("click", function(e) {
                e.stopPropagation();

                jQuery.fn.ptibox.toggleSlideshow();

                return false;
            });

            jQuery("#ptibox_play").show();
        }
	};

	jQuery.fn.ptibox.toggleSlideshow =  function() {
        if (playing) {
            jQuery.fn.ptibox.stopSlideshow();
        }
        else {
            jQuery.fn.ptibox.startSlideshow();
        }
    }

	jQuery.fn.ptibox.startSlideshow =  function() {
        if (!playing) {
            playing = !playing;

            jQuery("#ptibox_play").addClass("ptibox_pause");
            jQuery("#ptibox_play").removeClass("ptibox_play");

            intInterval = window.setInterval(function() {
                if (opts.itemCurrent == opts.itemArray.length - 1) {
                    opts.itemCurrent = 0;
                }
                else {
                    opts.itemCurrent++;
                }

                jQuery.fn.ptibox.changeItem();
            }, 5000);
        }
    }

	jQuery.fn.ptibox.stopSlideshow =  function() {
        if (playing)
        {
            playing = !playing;

            jQuery("#ptibox_play").addClass("ptibox_play");
            jQuery("#ptibox_play").removeClass("ptibox_pause");

            intInterval = window.clearInterval(intInterval);
        }
    }

	jQuery.fn.ptibox.finish =  function() {
		jQuery.fn.ptibox.setNavigation();

		jQuery.fn.ptibox.preloadNeighborImages();

		jQuery(document).keydown(function(e) {
			if (e.keyCode == 27) {
			    jQuery.fn.ptibox.stopSlideshow();
				jQuery.fn.ptibox.close();
				jQuery(document).unbind("keydown");

			} else if(e.keyCode == 37 && opts.itemCurrent != 0) {
				opts.itemCurrent--;
				jQuery.fn.ptibox.changeItem();
				jQuery(document).unbind("keydown");

			} else if(e.keyCode == 39 && opts.itemCurrent != (opts.itemArray.length - 1)) {
				opts.itemCurrent++;
				jQuery.fn.ptibox.changeItem();
				jQuery(document).unbind("keydown");
			}
		});

		if (opts.centerOnScroll) {
			jQuery(window).bind("resize scroll", jQuery.fn.ptibox.scrollBox);
		} else {
			jQuery("div#ptibox_outer").css("position", "absolute");
		}

		if (opts.hideOnContentClick) {			    
		    jQuery("#ptibox_wrap").click(jQuery.fn.ptibox.stopSlideshow);
			jQuery("#ptibox_wrap").click(jQuery.fn.ptibox.close);
		}


        // shop content clicks closing
		//jQuery("#ptibox_inner").bind("click", function(){alert("click");return false;});
		
		jQuery("#ptibox_overlay, #ptibox_close").bind("click", jQuery.fn.ptibox.stopSlideshow);
		jQuery("#ptibox_overlay, #ptibox_close").bind("click", jQuery.fn.ptibox.close);

        if (opts.showCloseButton)
        {
            jQuery("#ptibox_close").show();
        }
        else
        {
            jQuery("#ptibox_close").hide();
        }
                    
        if (opts.showInfoButton)
        {
            jQuery("#ptibox_info").show();
        }
        else
        {
            jQuery("#ptibox_info").hide();
        }

        if (opts.showPlayButton)
        {
            jQuery("#ptibox_play").show();
        }
        else
        {
            jQuery("#ptibox_play").hide();
        }
                
        jQuery("#ptibox_caption").show();

        if (opts.itemArray[opts.itemCurrent].title !== undefined && opts.itemArray[opts.itemCurrent].title.length > 0) {
            //jQuery('#ptibox_title div').html(opts.itemArray[ opts.itemCurrent ].title);
            //jQuery('#ptibox_title').show();

            var strTitle = "";

            if (opts.itemArray.length > 1) {
                strTitle = "<strong>Image " + (opts.itemCurrent + 1) + " of " + opts.itemArray.length + " </strong><br />" + opts.itemArray[opts.itemCurrent].title;
            }
            else {
                strTitle = opts.itemArray[opts.itemCurrent].title;
            }

            jQuery('#ptibox_caption_inner').html(strTitle);
            //jQuery('#ptibox_title').show();
        }

		if (opts.overlayShow && isIE) {
			//jQuery('embed, object, select', jQuery('#ptibox_content')).css('visibility', 'visible');
			jQuery('select', jQuery('#ptibox_content')).css('visibility', 'visible');
		}

		if (jQuery.isFunction(opts.callbackOnShow)) {
			opts.callbackOnShow();
		}

		busy = false;
	};







	jQuery.fn.ptibox.scrollBox = function() {
		var pos = jQuery.fn.ptibox.getViewport();

		jQuery("#ptibox_outer").css('left', ((jQuery("#ptibox_outer").width()	+ 36) > pos[0] ? pos[2] : pos[2] + Math.round((pos[0] - jQuery("#ptibox_outer").width()	- 36)	/ 2)));
		jQuery("#ptibox_outer").css('top',  ((jQuery("#ptibox_outer").height()	+ 50) > pos[1] ? pos[3] : pos[3] + Math.round((pos[1] - jQuery("#ptibox_outer").height()	- 50)	/ 2)));
	};

	jQuery.fn.ptibox.getNumeric = function(el, prop) {
		return parseInt(jQuery.curCSS(el.jquery?el[0]:el,prop,true))||0;
	};

	jQuery.fn.ptibox.getPosition = function(el) {
		var pos = el.offset();

		pos.top	+= jQuery.fn.ptibox.getNumeric(el, 'paddingTop');
		pos.top	+= jQuery.fn.ptibox.getNumeric(el, 'borderTopWidth');

		pos.left += jQuery.fn.ptibox.getNumeric(el, 'paddingLeft');
		pos.left += jQuery.fn.ptibox.getNumeric(el, 'borderLeftWidth');

		return pos;
	};

	jQuery.fn.ptibox.showIframe = function() {
        jQuery.fn.ptibox.hideLoading();
		jQuery("#ptibox_frame").show();
	};

	jQuery.fn.ptibox.getViewport = function() {
		return [jQuery(window).width(), jQuery(window).height(), jQuery(document).scrollLeft(), jQuery(document).scrollTop() ];
	};

	jQuery.fn.ptibox.animateLoading = function() {
		if (!jQuery("#ptibox_loading").is(':visible')){
			clearInterval(loadingTimer);
			return;
		}

		jQuery("#ptibox_loading > div").css('top', (loadingFrame * -40) + 'px');

		loadingFrame = (loadingFrame + 1) % 12;
	};

	jQuery.fn.ptibox.showLoading = function() {
		clearInterval(loadingTimer);

		var pos = jQuery.fn.ptibox.getViewport();

		jQuery("#ptibox_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();

		jQuery("#ptibox_loading").bind('click', jQuery.fn.ptibox.close);

		loadingTimer = setInterval(jQuery.fn.ptibox.animateLoading, 66);
	};

	jQuery.fn.ptibox.hideLoading = function() {
		jQuery(".ptibox_loading").hide();	
	}

	jQuery.fn.ptibox.close = function(pobjCallbackOnClose) {
		busy = true;

        if (pobjCallbackOnClose != null)
        {
            opts.callbackOnClose = pobjCallbackOnClose;
        }        

		jQuery(imagePreloader).unbind();

		jQuery("#ptibox_overlay, #ptibox_inner, #ptibox_close, #ptibox_info, #ptibox_play").unbind();

		if (opts.hideOnContentClick) {
			jQuery("#ptibox_wrap").unbind();
		}

        jQuery("#ptibox_close, #ptibox_info, #ptibox_play, .ptibox_loading, #ptibox_left, #ptibox_right, #ptibox_title").hide();

		if (opts.centerOnScroll) {
			jQuery(window).unbind("resize scroll");
		}

		__cleanup = function() {
			jQuery("#ptibox_overlay, #ptibox_outer").hide();

			if (opts.centerOnScroll) {
				jQuery(window).unbind("resize scroll");
			}

			if (isIE) {
				//jQuery('embed, object, select').css('visibility', 'visible');
				jQuery('select').css('visibility', 'visible');
			}

			if (jQuery.isFunction(opts.callbackOnClose)) {
				opts.callbackOnClose();
			}

			busy = false;
		};

		if (jQuery("#ptibox_outer").is(":visible") !== false) {
			if (opts.zoomSpeedOut > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
				var orig_item	= opts.itemArray[opts.itemCurrent].orig;
				var orig_pos	= jQuery.fn.ptibox.getPosition(orig_item);

				var itemOpts = {
					'left':		(orig_pos.left - 18) + 'px',
					'top': 		(orig_pos.top  - 18) + 'px',
					'width':	jQuery(orig_item).width(),
					'height':	jQuery(orig_item).height()
				};

				if (opts.zoomOpacity) {
					itemOpts.opacity = 'hide';
				}

				jQuery("#ptibox_outer").stop(false, true).animate(itemOpts, opts.zoomSpeedOut, opts.easingOut, __cleanup);

			} else {
				jQuery("#ptibox_outer").stop(false, true).fadeOut("slow", __cleanup);
			}

		} else {
			__cleanup();
		}

		return false;
	};
	
	
	jQuery.fn.ptibox.showItem = function(objItem) {
	    // Clear out the current items and show the one whish is passed.
	    opts.itemArray = new Array();
	    opts.itemArray.push(objItem);
	    
	    jQuery.fn.ptibox.changeItem();
	    
	    jQuery.fn.ptibox.hideLoading();
	}
	
	


	jQuery.fn.ptibox.build = function() {
		var html = '';

        html += '<div id="ptibox_overlay"></div>';
        html += '<div id="ptibox_wrap">';
        html += '<div class="ptibox_loading" id="ptibox_loading"><div></div></div>';
        html += '<div id="ptibox_outer">';
        html += '<div id="ptibox_inner">';
        html += '<div id="ptibox_close"></div>';
        html += '<div id="ptibox_info"></div>';
        html += '<div id="ptibox_play" class="ptibox_play"></div>';
        html += '<div id="ptibox_bg"><div class="ptibox_bg ptibox_bg_n"></div><div class="ptibox_bg ptibox_bg_ne"></div><div class="ptibox_bg ptibox_bg_e"></div><div class="ptibox_bg ptibox_bg_se"></div><div class="ptibox_bg ptibox_bg_s"></div><div class="ptibox_bg ptibox_bg_sw"></div><div class="ptibox_bg ptibox_bg_w"></div><div class="ptibox_bg ptibox_bg_nw"></div></div>';
        html += '<a href="javascript:;" id="ptibox_left"><span class="ptibox_ico" id="ptibox_left_ico"></span></a><a href="javascript:;" id="ptibox_right"><span class="ptibox_ico" id="ptibox_right_ico"></span></a>';
        html += '<div id="ptibox_content"></div>';
        html += '<div id="ptibox_caption"><div id="ptibox_caption_inner"></div></div>';
        html += '<div id="ptibox_title"></div>';
        html += '<div id="ptibox_button"></div>';
        html += '</div>';
        html += '</div>';
        html += '</div>';

        jQuery(html).appendTo("body");

        jQuery('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="ptibox_title" id="ptibox_title_left"></td><td class="ptibox_title" id="ptibox_title_main"><div></div></td><td class="ptibox_title" id="ptibox_title_right"></td></tr></table>').appendTo('#ptibox_title');
        
		if (isIE) {
			jQuery("#ptibox_inner").prepend('<iframe class="ptibox_bigIframe" scrolling="no" frameborder="0"></iframe>');
            jQuery("#ptibox_close, #ptibox_info, #ptibox_play, .ptibox_bg, .ptibox_title, .ptibox_ico").fixPNG();
		}
	};

	jQuery.fn.ptibox.defaults = {
		padding				:	10,
		imageScale			:	true,
		zoomOpacity			:	false,
		zoomSpeedIn			:	0,
		zoomSpeedOut		:	0,
		zoomSpeedChange		:	300,
		easingIn			:	'swing',
		easingOut			:	'swing',
		easingChange		:	'swing',
		frameWidth			:	500,
		frameHeight			:	400,
		overlayShow			:	true,
		overlayOpacity		:	0.3,
		hideOnContentClick	:	false,
		centerOnScroll		:	true,
		itemArray			:	[],
		callbackOnStart		:	null,
		callbackOnShow		:	null,
		callbackOnClose		:	null,
		showInfoButton      :   true,
		showPlayButton      :   true,
		showCloseButton     :   true
	};

    jQuery.fn.ptibox.itemDefaults = function (){
        var obj = new Object();
        
        obj.htmlContent         = ""; 
        obj.href                = ""; 
        obj.title               = ""; 
        obj.orig                = null; 
        obj.frameWidth          = 500; 
        obj.frameHeight         = 400    
        
        return obj;
    };

    jQuery.fn.ptibox.generateItemObject = function(htmlContent, htmlButton, href, title, orig, frameWidth, frameHeight)
    {
        return {htmlContent: htmlContent, htmlButton: htmlButton, href: href, title: title, orig: orig, frameWidth: frameWidth, frameHeight: frameHeight};
    }

	jQuery(document).ready(function() {
		jQuery.fn.ptibox.build();
	});

})(jQuery);

