

/*
SMMiLe JavaScript Object Model
Version 2.0
By Daryl Beattie, Xiang Chen
Copyright 2000, ScreamingMedia

SAMPLE USAGE [note that "script" tag is broken as "sc ript" so that it does not end this script]:

The code blow goes in the <HEAD> section of your HTML file
replace "JSDir/ContentSetID" with your JavaScript file path and name

<sc ript language="JavaScript" src="JSDir/ContentSetID.js"></sc ript>
<sc ript language="JavaScript">
    if(typeof SMChosenContent != \\'undefined\\') {
        document.write("<scri" + "pt language=\"JavaScript\" src=\"JSDir/ContentSetID" + SMChosenContent + ".js\"></sc" + "ript>");
    }
</scr ipt>

The JavaScript objects are modelled after the SMMiLe XML structure:

<content-set>
    <content>
        <article>
            <title>...</title>
            <metadata>...</metadata>
            <core>...</core>
            <body>...</body>
        </article>
    </content>
    ...    
</content-set>

As for the JavaScript, it is structured like this:

contentSet[0](id, name, language, publishedDate, contents)
|--contents[i](id, revisionId, type, language, role, article) 
    |
    |--article(title, metadata, core, body, photo)
        |
        |--metadata(documentMetadata, publicationMetadata, structuralMetadata, subjectMetadata, relatedContentMetadata, processingMetadata)
        |    |--documentMetadata(storage, publisherReleaseDate,player-url)
        |    |--publicationMetadata(publicationName)
        |    |--structuralMetadata(width,height,format,resolution,duration,mimetype)
        |    |--subjectMetadata(featureName)
		|	 |--relatedContentMetadata(relatedContents)
	    |    |    |--relatedContents[type](id, type, refId, refType);
        |    |--processingMetadata()
        |
        |--core(summaryHeadline, docAbstract, headline, author, copyright, dateLine, dateTime, type, caption)
        |-- photo(url, width, height, alt, caption)

An example of using this object model to print out the body of the second
article is: document.write(SMContentSet[0].contents[1].article.body);

*/




function displayContentPage(url, contentNum, contentSetNum, targetWindowName) {
    // check the arguments...
    if (displayContentPage.arguments.length == 1 ) {
        contentNum=0;
        contentSetNum=0;
        targetWindowName="_self";
    } else if (displayContentPage.arguments.length == 2 ) {
        contentSetNum=0;
        targetWindowName="_self";
    } else if (displayContentPage.arguments.length == 3 ) {
        targetWindowName="_self";
    }

    window.open(url + "?SMDOCID=" + SMContentSet[contentSetNum].contents[contentNum].id + "&SMContentSet=" + contentSetNum, targetWindowName);
}

function getParamValue(matchString, defaultValue) {
    var thisURL = window.location.toString();
    var value = defaultValue;
    if ((thisURL.indexOf("?") != -1) &&
        (thisURL.indexOf(matchString) != -1) &&
        (thisURL.charAt(thisURL.indexOf(matchString) + matchString.length) != "&")) {
        start = thisURL.indexOf(matchString) + matchString.length;
        if (thisURL.indexOf("&", start) > -1) {
            value = thisURL.substring(start, (thisURL.indexOf("&", start)));
        }
        else {
            value = thisURL.substring(start, thisURL.length);
        }
    }
    return value;
}

var SMChosenContent = Number(getParamValue("SMContentIndex=", 0));
var SMChosenContentSet = Number(getParamValue("SMContentSet=", 0));
var SMChosenSegment = getParamValue("SMSegment=", "original");
var SMDOCID = getParamValue("SMDOCID=", "");

function prettyDate(date) {
    var result;
    if (date.substring(5,7) == "01") {result = "January ";}
    else if (date.substring(5,7) == "02") {result = "February ";}
    else if (date.substring(5,7) == "03") {result = "March ";}
    else if (date.substring(5,7) == "04") {result = "April ";}
    else if (date.substring(5,7) == "05") {result = "May ";}
    else if (date.substring(5,7) == "06") {result = "June ";}
    else if (date.substring(5,7) == "07") {result = "July ";}
    else if (date.substring(5,7) == "08") {result = "August ";}
    else if (date.substring(5,7) == "09") {result = "September ";}
    else if (date.substring(5,7) == "10") {result = "October ";}
    else if (date.substring(5,7) == "11") {result = "November ";}
    else {result = "December ";}
    if (date.charAt(8) == "0") {result += date.charAt(9);}
    else {result += date.substring(8,10);}
    return result + ", " + date.substring(0,4);
}

// Metadata sub-type element objects.
function MakeDocumentMetadata(myStorage, myPublisherReleaseDate, myPlayerUrl) {
    this.storage = myStorage;
    this.publisherReleaseDate = myPublisherReleaseDate;
    this.playerUrl = myPlayerUrl;
}
function MakePublicationMetadata(myPublicationName) {
    this.publicationName = myPublicationName;
}

function MakeStructuralMetadata(myWidth,myHeight,myFormat,myResolution,myDuration,myMimeType) {
    this.width = myWidth;
    this.height= myHeight;
    this.format = myFormat;
    this.resolution = myResolution;
    this.duration = myDuration;
    this.mimetype = myMimeType;
}
function MakeSubjectMetadata(myFeatureName) { 
    this.featureName = myFeatureName;
}

function MakeRelatedContentMetadata(myRelatedContents) {
    this.relatedContents = myRelatedContents;
}

function MakeRelatedContent(myId, myType, myRefId, myRefType) {
    this.id=myId;
    this.type=myType;
    this.refId=myRefId;
    this.refType=myRefType;
}

function MakeProcessingMetadata() { }

// Metadata element object (made up of the sub-types).
function MakeMetadata(myDocumentMetadata, myPublicationMetadata, myStructuralMetadata, mySubjectMetadata, myRelatedContentMetadata, myProcessingMetadata) {
    this.documentMetadata = myDocumentMetadata;
    this.publicationMetadata = myPublicationMetadata;
    this.structuralMetadata = myStructuralMetadata;
    this.subjectMetadata = mySubjectMetadata;
    this.relatedContentMetadata = myRelatedContentMetadata;
    this.processingMetadata = myProcessingMetadata;
}

// Core element object
function MakeCore(mySummaryHeadline, myAbstract, myHeadline, myAuthor, myCopyright, myDateLine, myDateTime, myType, myCaption) {
    this.summaryHeadline = mySummaryHeadline;
    this.docAbstract = myAbstract;
    this.headline = myHeadline;
    this.author = myAuthor;
    this.copyright = myCopyright;
    this.dateLine = myDateLine;
    this.dateTime = myDateTime;
    this.type = myType;
    this.caption = myCaption;
}

function MakePhoto (myURL,myWidth,myHeight,myAlt,myCaption) {
    this.url = myURL;
    this.width = myWidth;
    this.height = myHeight;
    this.alt = myAlt;
    this.caption = myCaption;
}

// Article element object
function MakeArticle(myTitle, myMetadata, myCore, myBody, myPhoto) {
    this.title = myTitle;
    this.metadata = myMetadata;
    this.core = myCore;
    this.body = myBody;
    this.photo = myPhoto;
}

//Segment element object
function MakeSegment (myId,myType,myIndex,myMetadata) {
    this.id = myId;
    this.type = myType;
    this.Index = myIndex;
    this.metadata = myMetadata;
}

// Content element object
function MakeContent(myId, myRevisionId, myType, myLanguage, myRole, myArticle) {
    this.id = myId;
    this.revisionId = myRevisionId;
    this.type = myType;
    this.language = myLanguage;
    this.role = myRole;
    this.article = myArticle;
}

// Content-set master element object
function MakeContentSet(myId, myName, myLanguage, myPublishedDate, myContents) {
    this.id = myId;
    this.name = myName;
    this.language = myLanguage;
    this.publishedDate = myPublishedDate;
    this.contents = myContents;
}


{ // This block intializes the data objects.
var Index = -1;
if (typeof SMContentSet == "undefined") {
var SMContentSet = new Array();
}
var contents = new Array();

documentMetadata = new MakeDocumentMetadata('internal', '2007-07-30T12:57:11','');
publicationMetadata = new MakePublicationMetadata('AFX News Limited');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'Autodesk Chairman Exercises Options',
'WASHINGTON (AP) - The executive chairman of software maker Autodesk Inc. exercised options for 10,772 shares of common stock under a prearranged trading plan, according to a Securities and Exchange Commission filing.',
'Autodesk Chairman Exercises Options',
'',
'Copyright 2007 AFX News Limited. All Rights Reserved.',
'WASHINGTON (AP)',
'',
'',
'');

title = 'Autodesk Chairman Exercises Options';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('afx_2007_07_30_COM_9698-6650-REG_SHA_USA_SOF_', '01185914851265', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T11:44:00','');
publicationMetadata = new MakePublicationMetadata('PR Newswire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'RE/MAX Named Third Best Military-Spouse Employer in U.S.',
'DENVER, July 31, 2007 /PRNewswire via COMTEX/ -- An innovative employment program has earned RE/MAX third place honors on The Military Spouse Magazine ranking of "2007 Top 10 Military Spouse FriendlySM Employers." Operation RE/MAX, created in cooperation...',
'RE/MAX Named Third Best Military-Spouse Employer in U.S.',
'',
'Copyright (C) 2007 PR Newswire. All Rights Reserved',
'DENVER, July 31, 2007 /PRNewswire via COMTEX/',
'',
'pr',
'');

title = 'RE/MAX Named Third Best Military-Spouse Employer in U.S.';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_pr_0000-0813-co-re_max-third-best', '01185914851265', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T10:59:00','');
publicationMetadata = new MakePublicationMetadata('PR Newswire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'Alternative Construction Company Receives Product Test Results',
'MELBOURNE, Fla., July 31, 2007 /PRNewswire-FirstCall via COMTEX/ -- Alternative Construction Company, Inc. (OTC Bulletin Board: ACCY) announced today that it has successfully completed its scheduled product testing to gain the continued ability to sell,...',
'Alternative Construction Company Receives Product Test Results',
'',
'Copyright (C) 2007 PR Newswire. All Rights Reserved',
'MELBOURNE, Fla., July 31, 2007 /PRNewswire',
'',
'pr',
'');

title = 'Alternative Construction Company Receives Product Test Results';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_pr_0000-0382-fl-alternatconstruct', '01185914851265', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T10:00:00','');
publicationMetadata = new MakePublicationMetadata('PR Newswire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'Wireless Software for Linux Cleared of Legal Uncertainty',
'NEW YORK, July 31, 2007 /PRNewswire via COMTEX/ -- Development of OpenHAL, a wireless network component for Linux, can now resume unfettered after months of legal uncertainty. OpenHAL allows people with wireless cards based on technology from Atheros...',
'Wireless Software for Linux Cleared of Legal Uncertainty',
'',
'Copyright (C) 2007 PR Newswire. All Rights Reserved',
'NEW YORK, July 31, 2007 /PRNewswire via COMTEX/',
'',
'pr',
'');

title = 'Wireless Software for Linux Cleared of Legal Uncertainty';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_pr_0000-8140-ny-softwarefreedom', '01185914851265', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T09:06:00','');
publicationMetadata = new MakePublicationMetadata('Canada NewsWire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'ActiveMine\'s Wireless Technology Specified in Safety Plans Submitted for 62 Coal Mines',
'',
'ActiveMine\'s Wireless Technology Specified in Safety Plans Submitted for 62 Coal Mines',
'',
'(C) 2007 Canada NewsWire. All Rights Reserved',
'TORONTO, Jul 31, 2007 (Canada NewsWire via COMTEX)',
'',
'',
'');

title = 'ActiveMine\'s Wireless Technology Specified in Safety Plans Submitted for 62 Coal Mines';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_cn_0000-7555-activemine-technology', '01185915128625', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T09:00:00','');
publicationMetadata = new MakePublicationMetadata('Business Wire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'Hill International Receives Project Management Contract for OQYANA',
'MARLTON, N.J. & DUBAI, UAE, Jul 31, 2007 (BUSINESS WIRE) -- Hill International (Nasdaq:HINT), the worldwide construction consulting firm, announced today that it has received a contract from PROMAN Project Management to provide subconsultant project management...',
'Hill International Receives Project Management Contract for OQYANA',
'',
'(C) 2007 Business Wire. All Rights Reserved',
'MARLTON, N.J. & DUBAI, UAE, Jul 31, 2007 (BUSINESS WIRE)',
'',
'pr',
'');

title = 'Hill International Receives Project Management Contract for OQYANA';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_bw_0000-7428-nj-hill-international', '01185915128625', 'article', 'en-US',    '', article);



documentMetadata = new MakeDocumentMetadata('internal', '2007-07-31T07:45:00','');
publicationMetadata = new MakePublicationMetadata('PR Newswire');


structuralMetadata = new MakeStructuralMetadata(0,0,'','','','');
subjectMetadata = new MakeSubjectMetadata('');
var relatedContents = new Array();

relatedContentMetadata = new MakeRelatedContentMetadata(relatedContents);
processingMetadata = new MakeProcessingMetadata();
metadata = new MakeMetadata(
documentMetadata,
publicationMetadata,
structuralMetadata,
subjectMetadata,
relatedContentMetadata,
processingMetadata);
core = new MakeCore(
'Jacobs Receives Clean Fuels Contract from Indian Oil',
'PASADENA, Calif., July 31, 2007 /PRNewswire-FirstCall via COMTEX/ -- Jacobs Engineering Group Inc. (NYSE: JEC) announced today that it received a contract from Indian Oil Corporation Limited (IOCL) to provide project management and engineering, procurement,...',
'Jacobs Receives Clean Fuels Contract from Indian Oil',
'',
'(C) 2007 PR Newswire. All Rights Reserved',
'PASADENA, Calif., July 31, 2007 /PRNewswire',
'',
'pr',
'');

title = 'Jacobs Receives Clean Fuels Contract from Indian Oil';

article = new MakeArticle(title, metadata, core, '','');




contents[++Index] = new MakeContent('comtex_2007_07_31_pr_0000-6487-ca-jacobs-contract', '01185915128625', 'article', 'en-US',    '', article);






contentSetId = '2581_Technology_Wires';
contentSetName = 'Technology_Wires';
contentSetLanguage = '';
contentSetPublishedDate = '2007-07-31T15:53:03';
id = '2581_Technology_Wires';
contentType = '';
} // End data initialization block.
if (typeof ContentIndex == "undefined") {
ContentIndex = -1;
}
SMContentSet[++ContentIndex] = new MakeContentSet(contentSetId, contentSetName, contentSetLanguage, contentSetPublishedDate, contents);
