var JS_EREPORTS = "http://www.emarketer.com/include/ereports.js (762 lines) 2001-02-27 19:43 Dean Hannotte"; /*********************************************************************** eReports Global JavaScript Library ---------------------------------- The eReports Global JavaScript library contains functions used by the eMarketer web site. It was developed beginning in July 2000 by Dean Hannotte, who is solely responsible for its contents, to support the processing of reports and report tables. Almost all eMarketer globals (variables and functions) begin with the string "e_" to easily demarcate them from the work of other individuals, groups and unspecified sentient beings. --------------------------------------------------------------------- WARNING: When updating this file, remember that all these versions should be identical: /home/secure.e-land.com/include/ereports.js /home/secure-proof/include/ereports.js /home/www.emarketer.com/virtual_html/include/ereports.js /home/www.emarketer.com/virtual_html-proof/include/ereports.js --------------------------------------------------------------------- RETIRED functions: (see virtual_html-old/include/ereports.js for reference) e_OrderNowButton() - retired 12/20/2000 -MJ e_PromoteRelevantReport() - retired 12/20/2000 -MJ e_ReportNames() - retired 12/20/2000 -MJ e_ReportsForm() - retired 12/20/2000 -MJ e_Option() - retired 12/20/2000 -MJ e_ReportsList() - retired 01/19/2001 -MJ ***********************************************************************/ /*--------------------------------------------------------------------*/ /* e_GenerateReportLinks() function */ /*--------------------------------------------------------------------*/ //Added 11/27/2000 -MJ //When this function is used on the report sell pages (/ereports/middle_row_center_cell_end.htm) //we don't pass an argument. However, when the function is called on //any other page on the site, we need to pass an argument (report_dir) //which should correspond to a e_ReportDir. function e_GenerateReportLinks(report_dir) { var img_alignment = "top"; var sep = " "; if (typeof report_dir == "undefined") { report_dir = e_ReportDir; } /* */ /* Generate 'Chapters' and 'Charts' */ /* -------------------------------- */ //This link should only appear on pages within the ereports directory. //This link should not appear if the report is in "presell" mode. //(i.e. there is no e_ReportSKU defined) //These two links can be relative since they will only appear in the //correct ereports directory. if (e_SectionDir == "ereports" && e_FnFt != "partner_reports.html" && e_ReportSKU != -1 && e_ReportSKU != "FREE" && e_ReportDir != "wired_women" && e_ReportDir != "myers_interactive_tv" && e_ReportDir != "imt_executive_insight" && e_ReportDir != "imt_permission_email") { var link = "/ereports/" + report_dir + "/contents.html"; if (e_ReportDir != "statmarket_usage_trends") { e_CreateImageLinkRollover(link, "lines", "lines_name1", "Chapters", img_alignment); } link = "/ereports/" + report_dir + "/charts.html"; e_CreateImageLinkRollover(link, "chart", "chart_name1", "Charts", img_alignment); } /* */ /* Generate 'More Info' */ /* ------------------- */ //don't show this link if we are already on a more info page! if ((!e_DefaultPage && e_SectionDir == "ereports") || e_SectionDir != "ereports") { link = "/ereports/" + report_dir + "/welcome.html"; e_CreateImageLinkRollover(link, "question", "question_name1" + report_dir, "More Info", img_alignment); } /* */ /* Generate 'Buy Now', 'Early-order', or 'Download Now' */ /* --------------------------------------------------- */ //This link should say "Early-order" if the report in question is in //"presell" mode. (if sku is 999). for ( rtx = 0; rtx + e_ReportTableWidth <= e_ReportTable.length; rtx += e_ReportTableWidth ) { if (report_dir == e_ReportTable[rtx + 1] && e_ReportSKU != "FREE") { if (e_ReportTable[rtx] == 999) { link = "/ereports/sell_early.html"; var linktext = "Early-order"; e_CreateImageLinkRollover(link, "dollar", "dollar_name1" + report_dir, linktext, img_alignment, "secure"); } else { link = "/bin/estatstore/cart?category=10000&add=" + e_ReportTable[rtx]; linktext = "Buy Now"; e_CreateImageLinkRollover(link, "dollar", "dollar_name1" + report_dir, linktext, img_alignment, "secure"); } break; } } if (rtx + e_ReportTableWidth > e_ReportTable.length && e_ReportSKU != "FREE") { e_Error("e_GenerateReportLinks(): Can't find '" + report_dir + "' in e_ReportTable."); } } /*--------------------------------------------------------------------*/ /* e_ReportList() function */ /*--------------------------------------------------------------------*/ //Replaced e_ReportDescription() on 11/13/2000 - MJ // default: level=1; special report: level=2; function e_ReportList ( level, title, pub_date, sku, sellpage, price, blurb, orderpage ) { if (level == null) level = ""; if (sku == null) sku = ""; if (sellpage == null) sellpage = ""; if (price == null) price = ""; if (orderpage == null) orderpage = ""; if (sellpage != "") { sellpage = "/ereports/" + sellpage; } if (orderpage != "") { orderpage = "/ereports/" + orderpage; } e_Write(""); e_Write(" "); e_Write(" "); e_Write(" "); /* */ /* Write the 'title' */ /* ---------------- */ e_Write(""); //if (level == 2) // { e_Write("    "); } e_Write(""); e_Write(title); e_Write(""); /* */ /* Write the 'tm' symbol, etc. */ /* -------------------------- */ e_Write(" tm"); if (level == 2) { e_Write("An eMarketer Special Report"); } /* */ /* Write the 'pub_date' */ /* ------------------- */ if (pub_date != "") { e_Write(" " + pub_date); } e_Write(""); /* */ /* Write the 'blurb' */ /* ---------------- */ if (blurb != "") { e_Write("
") e_Write("" + blurb + ""); } e_Write(""); /* */ /* Write the 'price' */ /* ---------------- */ e_Write(" " + price + ""); /* */ /* Write 'buy now' and 'more info' */ /* ------------------------------ */ e_Write(""); e_Write("buy now"); e_Write(""); e_Write("more info"); e_Write(" "); } /*--------------------------------------------------------------------*/ /* e_ReportListEnd() function */ /*--------------------------------------------------------------------*/ function e_ReportListEnd() { e_Write(""); e_Write(""); e_Write(""); } /*--------------------------------------------------------------------*/ /* e_ReportLink() function */ /*--------------------------------------------------------------------*/ function e_ReportLink(sku) { var ex; for ( ex = 0; ex + e_ReportTableWidth <= e_ReportTable.length; ex += e_ReportTableWidth ) { if (sku == e_ReportTable[ex]) { var directory = e_ReportTable[ex + 1]; e_NonSecureLink("/ereports/" + directory + "/welcome.html"); return; } } } /*--------------------------------------------------------------------*/ /* e_ShowSelectedReport() function */ /*--------------------------------------------------------------------*/ function e_ShowSelectedReport(select) { // select.value works in IE but not NN! var report_dir = select.options[select.selectedIndex].value; // alert("e_ShowSelectedReport()\nselectedIndex: " + select.selectedIndex + "\nreport_dir: '" + report_dir + "'."); if (report_dir == "") return; location.href = e_NonSecureHref("/ereports/" + report_dir + "/welcome.html"); } /**********************************************************************/ /* */ /* "Table of Contents" Functions */ /* */ /* These variables and functions, all of whose names begin with */ /* "e_Toc", are used to generate tables of content on web pages */ /* that have the same look and feel as the tables of content in our */ /* printed reports. Their design is generalized enough to also be */ /* able to generate list of charts and other entities. */ /* */ /**********************************************************************/ var e_TocDebug = false; // variable var e_TocPageColWidth = 10; // variable var e_TocPrefixWidths = new Array(10, 10, 10, 10, 10, 10); // variable var e_TocIndents = new Array(0, 5, 10, 15, 20, 25); // parameter var e_TocBegAttribs = new Array(""); // parameter var e_TocEndAttribs = new Array(""); // parameter var e_TocRightMargin = 0; // parameter var e_TocSeparator = "
"; // parameter var e_TocHasPageNumbers = true; // parameter var e_TocOrderEntire = 'Order report'; var e_TocOrderChecked = 'Order chapters'; var e_TocOrder = ''; // e_TocOrderEntire or // e_TocOrderChecked var e_TocBaseSkuForChapters = 0; // 4-digit sku (i. e. SKU) number var e_TocChapter = 0; // chapter number var e_TocChapterPages = new String(); // pages in this chapter var e_TocChapterPrice = new String(); // price of this chapter var e_TocSection = 0; // section number var e_TocChart = 0; // chart number var e_TocPriorLevel = 0; // tracks level switches var e_TocCheckBoxes = 0; // number of checkboxes var e_TocSkuList = new String(); // used to validate the form /*--------------------------------------------------------------------*/ /* e_Toc() function */ /*--------------------------------------------------------------------*/ function e_Toc() { var x; for (x = 0; x < e_Toc.arguments.length; x++) { if (e_Debug) {e_Write("" + x + ": '" + e_Toc.arguments[x] + "', ");} e_TocElem(e_Toc.arguments[x]); } } /*--------------------------------------------------------------------*/ /* e_TocButtons() function */ /*--------------------------------------------------------------------*/ function e_TocButtons() { e_Write("

"); // e_Write("    "); // e_Write(""); e_Write(""); // e_Write(" "); // e_Write("    "); e_Write(" "); e_Write(""); e_Write("

"); } /*--------------------------------------------------------------------*/ /* e_TocChapterFooter() function */ /*--------------------------------------------------------------------*/ function e_TocChapterFooter() { var check_box_width = 17; // just a guess! if (e_TocDebug) {e_Write("e_TocChapterFooter(); ");} e_Write(""); e_Write(""); // e_Write(""); e_Write(""); e_Write("
 "); e_Write(e_TocChapterPages); e_Write(""); // e_Write(" "); // e_Write(""); e_Write(e_TocChapterPrice); e_Write("
"); e_TocChapterPages = ''; e_TocChapterPrice = ''; } /*--------------------------------------------------------------------*/ /* e_TocElem() function */ /*--------------------------------------------------------------------*/ function e_TocElem(text, chapter_pages, chapter_price) { var prefix = ""; var title = ""; var page = ""; var level = 1; var sku = ''; // 7-digit chapter or 10-digit section sku var x; if (e_Debug) e_TocDebug = true; if (e_TocDebug) {e_Write("text = '" + text + "'
");} // 'level' is one more than the number of spaces, // tabs, newlines or returns before the first token: for (x = 0; x < text.length - 1; x++) { this_char = text.charAt(x); if (" \t\n\r".indexOf(this_char) < 0) break; } level = x + 1; if (x > 0) text = text.substr(x); if (e_TocDebug) {e_Write("level = '" + level + "', ");} // 'prefix' (i. e. chapter or section number) is the first token: for (x = 0; x < text.length - 1; x++) { if (text.charAt(x) == " ") break; } if (text.charAt(x) != " ") x++; prefix = text.substr(0, x); text = text.substr(x + 1); prefix = e_Translate(prefix, "_", " "); prefix += " "; if (e_TocDebug) {e_Write("prefix = '" + prefix + "', ");} // 'page' number is the last token: if (e_TocHasPageNumbers) { for (x = text.length - 1; x >= 0; x--) { if (text.charAt(x) == " ") break; } if (text.charAt(x) != " ") x--; page = text.substr(x + 1); text = text.substr(0, x); page = e_Translate(page, "_", " "); if (e_TocDebug) {e_Write("page = '" + page + "', ");} } // 'title' is what's left: title = text + " "; if (e_TocDebug) {e_Write("title = '" + title + "', ");} x = level - 1; // construct chapter and section numbers: // (this assumes level can only be 1 or 2) if (e_TocBaseSkuForChapters != 0) { if (level == 1) { e_TocChapter += 1; e_TocSection = 0; e_TocCheckBoxes++; if (e_TocCheckBoxes == 1) { //alert("e_TocBaseSkuForChapters = '" + e_TocBaseSkuForChapters + "'."); } } else // if (level == 2) { e_TocSection += 1; } sku = '' + e_TocBaseSkuForChapters; if (e_TocChapter > 0) { sku += e_LeftPad(e_TocChapter, 3, '0') // Pad to 3 bytes w/zeroes } if (e_TocSection > 0) { sku += e_LeftPad(e_TocSection, 3, '0') // Pad to 3 bytes w/zeroes } if (e_TocDebug) {e_Write("e_TocBaseSkuForChapters = '" + e_TocBaseSkuForChapters + "', ");} if (e_TocDebug) {e_Write("e_TocChapter = '" + e_TocChapter + "', ");} if (e_TocDebug) {e_Write("e_TocSection = '" + e_TocSection + "', ");} if (e_TocDebug) {e_Write("sku = '" + sku + "', ");} } var left_margin = e_TocIndents[x]; if (x >= e_TocIndents.length) left_margin = 5; var prefix_width = e_TocPrefixWidths[x]; if (x >= e_TocPrefixWidths.length) prefix_width = 5; var beg_attribs = e_TocBegAttribs[x]; if (x >= e_TocBegAttribs.length) beg_attribs = ""; var end_attribs = e_TocEndAttribs[x]; if (x >= e_TocEndAttribs.length) end_attribs = ""; var page_col_width = 0; if (e_TocHasPageNumbers) page_col_width = e_TocPageColWidth; var right_margin = e_TocRightMargin; var title_width = 100 - (left_margin + prefix_width + page_col_width + right_margin); left_margin = "" + left_margin + "%"; prefix_width = "" + prefix_width + "%"; title_width = "" + title_width + "%"; page_col_width = "" + page_col_width + "%"; right_margin = "" + right_margin + "%"; if (e_TocDebug) { e_Write("left_margin = '" + left_margin + "', "); e_Write("prefix_width = '" + prefix_width + "', "); e_Write("title_width = '" + title_width + "', "); e_Write("page_col_width = '" + page_col_width + "', "); e_Write("right_margin = '" + right_margin + "'."); } var border = e_Border; if (e_TocDebug) border = "01"; if (level == 1) { if (e_TocChapter > 1) { e_TocChapterFooter(); } e_Write(e_TocSeparator); } e_Write(""); if (sku != '') { e_Write(""); } e_Write(""); e_Write(""); e_Write(""); if (e_TocHasPageNumbers) { e_Write(""); } if (right_margin > 0) { e_Write(""); } e_Write("
"); if (level == 1) { e_Write(""); } else { e_Write("      "); } e_Write(" " + beg_attribs + prefix + end_attribs + "" + beg_attribs + title + end_attribs + "" + page + " 
"); e_TocPriorLevel = level; if (e_TocBaseSkuForChapters != 0) // disaggregated report? { if (level == 1) { e_TocChapterPages = chapter_pages; // save for later e_TocChapterPrice = chapter_price; // save for later if (e_TocDebug) {e_Write("e_TocChapterPages = '" + e_TocChapterPages + "', ");} if (e_TocDebug) {e_Write("e_TocChapterPrice = '" + e_TocChapterPrice + "', ");} } } } /*--------------------------------------------------------------------*/ /* e_TocFormEnd() function */ /*--------------------------------------------------------------------*/ function e_TocFormEnd() { e_TocChapterFooter(); e_TocButtons(); e_Write(""); } /*--------------------------------------------------------------------*/ /* e_TocFormIsValid() function */ /*--------------------------------------------------------------------*/ function e_TocFormIsValid() { var cx, proceed = true; // alert("Entering e_TocFormIsValid();"); // alert("e_TocOrder = '" + e_TocOrder + "'."); if (e_TocOrder == e_TocOrderEntire) { // alert("You would have purchased the entire report."); // document.toc_form.add.value = e_TocBaseSkuForChapters; WRONG! document.toc_form.add.value = e_ReportSKU; // RIGHT! alert("document.toc_form.add.value == '" + document.toc_form.add.value + "'."); } else if (e_TocOrder != e_TocOrderChecked) { alert("Invalid e_TocOrder value: '" + e_TocOrder + "'."); proceed = false; // cancel the submit } else { // alert("e_TocCheckBoxes = '" + e_TocCheckBoxes + "'."); e_TocSkuList = ''; for (cx = 0; cx < e_TocCheckBoxes; cx++) { if (document.toc_form.add[cx].checked) { e_TocSkuList += document.toc_form.add[cx].value + ','; } } if (e_TocSkuList == '') { alert("Please check off the chapters you want to buy."); proceed = false; // cancel the submit } else { e_TocSkuList = e_TocSkuList.substr(0, e_TocSkuList.length - 1); } } // alert("document.toc_form.action = '" + document.toc_form.action + "'."); // alert("document.toc_form.add.value = '" + document.toc_form.add.value + "'."); // alert("e_TocSkuList = '" + e_TocSkuList + "'."); // alert("proceed = '" + proceed + "'."); return proceed; // proceed with the submit? // return false; // cancel the submit } /*--------------------------------------------------------------------*/ /* e_TocFormStart() function */ /*--------------------------------------------------------------------*/ function e_TocFormStart(base_sku, price) { // e_Debug = true; e_TocBaseSkuForChapters = '' + base_sku; // convert to string e_TocSetHasPageNumbers(false); //e_Write(""); //taken out by MJ on 11/1/00 e_Write("You can buy either this entire report for " + price + " or any number of individual chapters. " + "Click '" + e_TocOrderEntire + "', or select the chapters you want " + "and click '" + e_TocOrderChecked + "'."); e_Write("
"); e_Write(""); e_Write(""); e_TocButtons(); } /*--------------------------------------------------------------------*/ /* e_TocSetBegAttribs() function */ /*--------------------------------------------------------------------*/ function e_TocSetBegAttribs() { for (x = 0; x < e_TocSetBegAttribs.arguments.length; x++) { e_TocBegAttribs[x] = e_TocSetBegAttribs.arguments[x]; } } /*--------------------------------------------------------------------*/ /* e_TocSetEndAttribs function */ /*--------------------------------------------------------------------*/ function e_TocSetEndAttribs() { for (x = 0; x < e_TocSetEndAttribs.arguments.length; x++) { e_TocEndAttribs[x] = e_TocSetEndAttribs.arguments[x]; } } /*--------------------------------------------------------------------*/ /* e_TocSetHasPageNumbers() function */ /*--------------------------------------------------------------------*/ function e_TocSetHasPageNumbers(has_page_numbers) { e_TocHasPageNumbers = has_page_numbers; } /*--------------------------------------------------------------------*/ /* e_TocSetIndents() function */ /*--------------------------------------------------------------------*/ function e_TocSetIndents() { for (x = 0; x < e_TocSetIndents.arguments.length; x++) { e_TocIndents[x] = e_TocSetIndents.arguments[x]; } } /*--------------------------------------------------------------------*/ /* e_TocSetPrefixWidths() function */ /*--------------------------------------------------------------------*/ function e_TocSetPrefixWidths() { for (x = 0; x < e_TocSetPrefixWidths.arguments.length; x++) { e_TocPrefixWidths[x] = e_TocSetPrefixWidths.arguments[x]; } } /*--------------------------------------------------------------------*/ /* e_TocSetRightMargin() function */ /*--------------------------------------------------------------------*/ function e_TocSetRightMargin(right_margin) { e_TocRightMargin = right_margin; } /*--------------------------------------------------------------------*/ /* e_TocSetSeparator() function */ /*--------------------------------------------------------------------*/ function e_TocSetSeparator(separator) { e_TocSeparator = separator; } /**********************************************************************/ /* E N D */ /**********************************************************************/