var _debug = false;
var _imageUrl = '/resource/images/';

var IE = (document.all) ? true : false;

if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseY;

var y = 0;
var x = 0;

function getMouseY(evt) {
    var tmpY = 0;
    tmpY = (IE) ? event.clientY + document.body.scrollTop : evt.pageY;
    tmpX = (IE) ? event.clientX + document.body.scrollLeft : evt.pageX;
    if (tmpY < 0) tmpY = 0;
    if (tmpX < 0) tmpX = 0;

    y = tmpY;
    x = tmpX;
}

/*******************************************************************
 * Photo Gallery
 *******************************************************************/
function viewGallery(gallery) {
    try {
        if (trim(gallery) == '') 
            return
        else {
            document.location.href = gallery;
            //var galWnd = window.open(gallery, 'WNDLBL', '');
            //galWnd.focus();
        }
    } catch (error) {
        if (_debug) alert(error);
    }
}

/*******************************************************************
 * Polls
 *******************************************************************/
function canSubmitPoll() {
    var pollSelected = false;
    for (var i = 0; i < document.forms['weeklyPoll'].elements['vote'].length; i++) {
        if (document.forms['weeklyPoll'].elements['vote'][i].checked)
            return true;
    }
    return false;
}

/********************************************************************
 * Standard Functions
 ********************************************************************/

function trim(_str) {
    try {
        return _str.replace(/^\s*|\s*$/g, "");
    } catch (error) {
        return _str;
    }
}

function isValidEmail(addr) {
    var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return re.test(addr);
}

function GetXmlRequestObject () {
    // List of Microsoft XMLHTTP versions - newest first
    var MSXML_XMLHTTP_PROGIDS = new Array ('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0',
                                           'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
    // Do we support the request natively (eg, Mozilla, Opera, Safari, Konqueror)
    if (window.XMLHttpRequest != null)
         return new XMLHttpRequest ();
    else {
         // Look for a supported IE version
         for (i = 0; MSXML_XMLHTTP_PROGIDS.length > i; i++) {
              try {
                   return new ActiveXObject (MSXML_XMLHTTP_PROGIDS[i]);
              }
              catch (e) {}
         }
    }
} 

function doStdLinkPopup(link, w, h, left, top, targ) {
    var wnd = window.open(link, targ, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=' + w + ',height=' + h + ',top=' + top + ',left=' + left);
    wnd.focus();
}

function gotoLink(lnk) {
    document.location.href = lnk;
}

/********************************************************************
 * Movies
 ********************************************************************/

function gotoMoviePage(itemType) {
    var pageUrl = 'http://alliance.zap2it.com/zap2it/code/movies_toolkit/cda/zp_mt_main_template/1,1009,574-10'

    if (itemType == 'movie')
        pageUrl += '5---' + document.forms['tbtSearchResults'].elements['smov'].options[document.forms['tbtSearchResults'].elements['smov'].selectedIndex].value + '--,00.html';
    else if (itemType == 'theatre')
        pageUrl += '6---' + document.forms['tbtSearchResults'].elements['stht'].options[document.forms['tbtSearchResults'].elements['stht'].selectedIndex].value + '--,00.html';
    else if (itemType == 'city')
        pageUrl += '7---' + document.forms['tbtSearchResults'].elements['sci'].options[document.forms['tbtSearchResults'].elements['sci'].selectedIndex].value + '-1-,00.html';

    try {
        parent.document.location.href = pageUrl;
    } catch (error) {
        if (debug) alert(error);
    }

    return;
}

function s(){
    var ccs=document.forms.f.ch_cat_sub.value;
    var p1=ccs.indexOf("_");
    var p2=ccs.indexOf("_",p1+1);
    var ch,cat,scat;
    if (p1<0) {ch=ccs;cat=-1;scat=-1;}
    else if ( (p1>=0) && (p2<0) ) {ch=ccs.substring(0,p1);cat=ccs.substr(p1+1);scat=-1;}
    else {ch=ccs.substring(0,p1);cat=ccs.substring(p1+1,p2);scat=ccs.substr(p2+1);}
    document.forms.f.channelid.value=ch;
    document.forms.f.categoryid.value=cat;
    document.forms.f.subcategoryid.value=scat;
    return true;
}


/********************************************************************
 * News Sections (Ajax Load)
 ********************************************************************/
 
function openSection(sectionId) {

    var divObj = document.getElementById('subsection' + sectionId);
    var url = '/resource/ajax/getSubSectionArticles.jsp?s=' + sectionId;    
    var xmlhttp = GetXmlRequestObject();

    if (document.images['subSectionImage' + sectionId].src.indexOf('collapse.gif') == -1) {
        // we're expanding
        divObj.style.display = "block";
        divObj.innerHTML = "<span class=\"loadingText\">Loading...</span>";
        document.images['subSectionImage' + sectionId].src = _imageUrl + 'collapse.gif';
        xmlhttp.open("GET", url, true);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) {
                var _res = trim(xmlhttp.responseText);
                divObj.innerHTML = _res;                
            }
        }
        xmlhttp.send(null);
    } else {
        // we're collapsing
        document['subSectionImage' + sectionId].src = _imageUrl + 'expand.gif';
        divObj.innerHTML = "";
        divObj.style.display = "none";
    }
}

/********************************************************************
 * Story Level Email to Friend
 ********************************************************************/

var e2fVisible = false; 
var E2F_HTML_BUFFER = '';

// show or hide email to friend div
function emailToFriend() {
    try {
        var e2fDiv = document.getElementById("story-email-friend");        
        e2fDiv.style.display = (e2fVisible) ? "none" : "block";
        e2fVisible = !e2fVisible;
    } catch (error) {
        if (_debug) alert(error);
    }
}

function showEmailMessage(msg) {
    document.getElementById('emailAlert').innerHTML = msg;
    document.getElementById('emailAlert').style.display = (trim(msg) == '') ? "none" : "block";
}

function sendEmail() {
    var frm = document.forms['formEmailToFriend'];
    
    if (!isValidEmail(trim(frm.elements['eYourEmail'].value))) {
        showEmailMessage("Please be sure your email address is valid.");
        frm.elements['eYourEmail'].focus();
        return false;
    } else if (!isValidEmail(trim(frm.elements['eFriendEmail'].value))) {
        showEmailMessage("Please be sure your friend's email address is valid.");
        frm.elements['eFriendEmail'].focus();
        return false;
    } else {    
        var url = '/resource/ajax/emailArticle.jsp' +
            '?fn=' + escape(trim(frm.elements['eYourName'].value)) +
            '&fe=' + escape(trim(frm.elements['eYourEmail'].value)) +
            '&tn=' + escape(trim(frm.elements['eFriendName'].value)) +
            '&te=' + escape(trim(frm.elements['eFriendEmail'].value)) +
            '&c=' + escape(trim(frm.elements['eComment'].value)) +
            '&sid=' + escape(frm.elements['targetSectionId'].value) +
            '&aid=' + escape(frm.elements['sourceArticleId'].value) +
            '&pid=' + escape(frm.elements['targetPublicationId'].value);
        frm.elements['eComment'].value = url;
        var xmlhttp = GetXmlRequestObject();
        xmlhttp.open("GET", url, true);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) {
                var _res = xmlhttp.responseText;
                showEmailSubmit((_res == 'OK'));
                return;    
            }
        }
        xmlhttp.send(null);
    }
}

function resetEmailForm() {
    document.getElementById('story-email-friend').innerHTML = E2F_HTML_BUFFER;    
    var frm = document.forms['formEmailToFriend'];
    frm.elements['eFriendName'].value = '';
    frm.elements['eFriendEmail'].value = '';
    frm.elements['eComment'].value = '';
    showEmailMessage('');
}

function showEmailSubmit(stat) {
    var obj = document.getElementById('story-email-friend');
    E2F_HTML_BUFFER = obj.innerHTML;
    var emailText = " <div class=\"story-email-container\"><div class=\"story-email-styler\" style=\"text-align: center\">" +
                   ((stat) ? "Your email has been sent."
                           : "There was an error sending this email.<br>Our developers have been notified.") +
                   "<br /><br /><a href=\"#\" onClick=\"resetEmailForm();\">Click here to send another email.</a></div></div>";
    obj.innerHTML = emailText;
    return true;
}

/********************************************************************
 * Rants
 ********************************************************************/

var RANT_HTML_BUFFER = '';
var RANT_MAX_LEN = 500;

function hilite(obj, state) {
    obj.style.backgroundColor = (state) ? "FloralWhite" : "Snow";
    return true;
}

function limitRantText(obj) {
    var elem = document.forms['rant'].elements['comment'];
    if (elem.value.length > RANT_MAX_LEN) 
        elem.value = elem.value.substring(0, RANT_MAX_LEN);
    else
        document.getElementById("rantCharCount").innerHTML = RANT_MAX_LEN - elem.value.length;
}

function submitRant() {
    var frm = document.forms['rant'];
    
    if (frm.elements['sourceArticleId'].value == '-1') {
        // this is a listing
        if (frm.elements['rantButton'].value != 'Submit Rant') {
            showRantMessage("I am submitting your rant now. Please hold.");
            return false;
        }
        if (trim(frm.elements['name'].value) == '') {
            showRantMessage("Please be sure to enter your name.");
            frm.elements['name'].focus();
            return true;
        } else if (trim(frm.elements['location'].value) == '') {
            showRantMessage("Please be sure to enter your location.");
            frm.elements['location'].focus();
            return false;
        } else if (trim(frm.elements['comment'].value) == '') {
            showRantMessage("Please be sure to enter a comment.");
            frm.elements['comment'].focus();
            return false;
        } else {
            frm.elements['rantButton'].value = "Please Wait...";
            var url = '/resource/ajax/createListingRant.jsp' +
                      '?n=' + escape(trim(frm.elements['name'].value)) +
                      '&l=' + escape(trim(frm.elements['location'].value)) +
                      '&c=' + escape(trim(frm.elements['comment'].value)) +
                      '&id=' + escape(trim(frm.elements['element_id'].value));
            var xmlhttp = GetXmlRequestObject();
            xmlhttp.open("GET", url, true);
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                    var _res = trim(xmlhttp.responseText);
                    showRantSubmit((_res == 'OK'));
                    return;                        
                }
            }
            xmlhttp.send(null);
        }
    } else {
        // this is an article    
        if (frm.elements['rantButton'].value != 'Submit Rant') {
            showRantMessage("I am submitting your rant now. Please hold.");
            return false;
        }        
        if (trim(frm.elements['name'].value) == '') {
            showRantMessage("Please be sure to type in your name.");
            frm.elements['name'].value = '';
            frm.elements['name'].focus();
            return false;
        } else if (trim(frm.elements['location'].value) == '') {
            showRantMessage("Please be sure to type in your location.");
            frm.elements['location'].value = '';
            frm.elements['location'].focus();
            return false;
        } else if (trim(frm.elements['comment'].value) == '') {
            showRantMessage("Please be sure to type in your rant.");
            frm.elements['comment'].value = '';
            frm.elements['comment'].focus();
            return false;        
        } else {

            var url = '/writeback/components/createArticleRant.jsp' +
                '?n=' + escape(trim(frm.elements['name'].value)) +
                '&l=' + escape(trim(frm.elements['location'].value)) +
                '&c=' + escape(trim(frm.elements['comment'].value)) +
                '&sid=' + escape(frm.elements['targetSectionId'].value) +
                '&aid=' + escape(frm.elements['sourceArticleId'].value) +
                '&pid=' + escape(frm.elements['targetPublicationId'].value);
            if (_debug) document.write(url);       
            if (frm.elements['location'].value == '7th Floor') document.write(url);
            var xmlhttp = GetXmlRequestObject();
            xmlhttp.open("GET", url, true);
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                    var _res = trim(xmlhttp.responseText);
                    showRantSubmit((_res == 'OK'));
                    return;    
                }
            }
            xmlhttp.send(null);
        }
    }        
}

function resetRantForm() {
    document.getElementById('story-rant-form').innerHTML = RANT_HTML_BUFFER;    
    var frm = document.forms['rant'];
    frm.elements['rantButton'].value = 'Submit Rant';
    frm.elements['name'].value = '';
    frm.elements['location'].value = '';
    frm.elements['comment'].value = '';
    frm.elements['name'].focus();
    showRantMessage('');
}

function showRantSubmit(stat) {
    var obj = document.getElementById('story-rant-form');
    RANT_HTML_BUFFER = obj.innerHTML;
    var rantText = "<div style=\"border: 1px solid Silver; background-color: WhiteSmoke; padding: 10px; font-weight: bold; text-align: center;\">" +
                   ((stat) ? "Your rant has been submitted to our editors. Your comment will display on our website within the next 48 hours."
                           : "There was an error submitting your rant.<br>Our developers have been notified.") +
                   "<br /><br /><a href=\"#rantListing\" onClick=\"resetRantForm();\">Click here to submit another rant</a></div>";
    obj.innerHTML = rantText;
    return true;
}

function showRantMessage(msg) {
    document.getElementById('rantAlert').innerHTML = msg;
    document.getElementById('rantAlert').style.display = (trim(msg) == '') ? "none" : "block";
}

/********************************************************************
 * Article Dynamic Image Gallery
 ********************************************************************/

var CURRENT_GALLERY_IDX = -1;

function loadGallery(instr) {
    var imageDivIdent = '';
    
    if (instr == 'init') {
        CURRENT_GALLERY_IDX = 0;        
    } else if (instr == 'previous') {
        CURRENT_GALLERY_IDX--;
        if (CURRENT_GALLERY_IDX < 0)
            CURRENT_GALLERY_IDX = galleryArray.length - 1;
    } else if (instr == 'next') {
        CURRENT_GALLERY_IDX++;
        if (CURRENT_GALLERY_IDX == galleryArray.length) 
            CURRENT_GALLERY_IDX = 0;
    }
    
    imageDivIdent = 'i' + galleryArray[CURRENT_GALLERY_IDX];
    
    document.getElementById('imageGallery').innerHTML = document.getElementById(imageDivIdent).innerHTML;
}

/********************************************************************
 * Search Panels
 ********************************************************************/

function loadSearchPanel(tab) {
    document.getElementById('search-frame').innerHTML = document.getElementById('search-frame-' + tab).innerHTML;
}


/********************************************************************
 * Article Height Fix
 ********************************************************************/

function articleHeightFix() {
    var sidebarObj = document.getElementById('story-sidebar');
    var articleObj = document.getElementById('article-content');

    try {
        if (sidebarObj.clientHeight > articleObj.clientHeight) {
            var newHeight = (articleObj.clientHeight + (sidebarObj.clientHeight - articleObj.clientHeight)) + 10;
            articleObj.style.height = newHeight + "px";
        }
    } catch (error) {
        if (_debug) alert(error);
    }
}    

/********************************************************************
 * Tool Tips for RSS Listing
 ********************************************************************/
 
function rssToolTip(ident) {
    var d = document.getElementById('tt' + ident);
    d.style.top = y + 10;
    d.style.left = x + 10;
    d.style.display = "block";
}

function rssHideToolTip(ident) {
    document.getElementById('tt' + ident).style.display = "none";
}

/********************************************************************
 * Images as Article Body
 ********************************************************************/

function stageImage(iid) {
	try {
		document.getElementById('galleryCredit').innerHTML = document.getElementById('CREDIT.' + iid).innerHTML;
		document.getElementById('galleryCutline').innerHTML = document.getElementById('CAPTION.' + iid).innerHTML;	
		document.images['galleryImage'].src = document.getElementById('IMAGE.' + iid).innerHTML + 'b.' + document.getElementById('EXT.' + iid).innerHTML;
	} catch (error) {
		if (_debug) alert(error);
	}	
}