
/*
FILE CONCAT ADD FILE
PATH: /ft/resources/client/modules/glossary/TermDefinition.js
*/

var TermDefinition = function() {
}


TermDefinition.prototype.init = function() {
	this.termDefinitionText = Element.parseSelector('DIV.termDefinitionText', 'wsod', 'first');

	if (this.termDefinitionText) {
		this.getAnchorTags();
		this.getFlashTags();
		this.getMovieTags();
	}
}

TermDefinition.prototype.getAnchorTags = function() {
	var linkTags = Element.parseSelector('A!reference', this.termDefinitionText);

	Element.setAttribute(linkTags, 'target', '_blank');
}

TermDefinition.prototype.getFlashTags = function() {
    var flashTags = Element.parseSelector('span.flash', this.termDefinitionText);
    var flashHolders = Element.parseSelector('div.flashHolder', this.termDefinitionText);
	var aFlashObjects = [];
	var oFlashObject = {};
	var flashHTML = [];
	
	if(flashTags.length > 0){
		for (var i = 0; i < flashTags.length; i++){
			aFlashObjects.push(
				oFlashObject["FlashObj"] = {
					"height" : flashTags[i].getAttribute("height"),
					"width" : flashTags[i].getAttribute("width"),
					"data" : flashTags[i].getAttribute("data")
				}
			)
		}
			
		Element.remove(flashTags)
		
		for (var i=0; i < aFlashObjects.length; i++){
			var obj = aFlashObjects[i]
			
			flashHTML.push(
				'<object data="',obj.data,'" type="application/x-shockwave-flash" width="',obj.width,'" height="',obj.height,'" wmode="opaque">',
					'<param name="movie" value="',obj.data,'"></param>',
				'</object>'
			)
	
		}

		for (var j = 0; j < flashHolders.length; j++) {
		    Element.setHTML(flashHolders[j], flashHTML.join(''))
		}
	}

}

TermDefinition.prototype.getMovieTags = function() {
    var movieTags = Element.parseSelector('span.movie', this.termDefinitionText);
    var movieHolders = Element.parseSelector('div.movieHolder', this.termDefinitionText);
    var aFlashObjects = [];
    var oFlashObject = {};
    var flashHTML = [];

    if (movieTags.length > 0) {
        for (var i = 0; i < movieTags.length; i++) {
            aFlashObjects.push(
				oFlashObject["FlashObj"] = {
				    "height": movieTags[i].getAttribute("height"),
				    "width": movieTags[i].getAttribute("width"),
				    "data": movieTags[i].getAttribute("data")
				}
			)
        }

        Element.remove(movieTags)

        for (var i = 0; i < aFlashObjects.length; i++) {
            var obj = aFlashObjects[i]

            flashHTML.push(
			    '<iframe frameborder="0" class="brightcoveHolder" src="', obj.data, '" height="', obj.height, '" width="', obj.width, '"></iframe>'
			)

        }

        for (var j = 0; j < movieHolders.length; j++) {
            Element.setHTML(movieHolders[j], flashHTML.join(''))
        }

    }

}
/*
FILE CONCAT ADD FILE
PATH: /ft/resources/client/modules/glossary/TermSearchPaging.js
*/
var TermSearchPaging_class = function(){
	this.contentBuffer = new ContentBuffer()
	this.resultsHolder =  Element.parseSelector("div.termsHolder", Element.get("wsod"), "first");
	this.currTerm = Element.parseSelector("span.currTerm", Element.get("wsod"), "first")
}

TermSearchPaging_class.prototype.init = function(){

	
	var term = this.currTerm.getAttribute("data")
	if(this.resultsHolder){
		this.paging = new Paging()
		this.paging.setContentContainer(this.resultsHolder);
		this.paging.setBufferLoadFunction(
			{
				contentType:                    'text/javascript'
				,context:                       this
				,url:                           '/ft/resources/buffer/TermResultsPagingBuffer.asp'
				,preventEval:	                true
				,method:                        'post'
				,data:                          {term:term}
				,onload:                        this.drawResultsTable
			}
		);
		this.paging.init();
	}
}

TermSearchPaging_class.prototype.drawResultsTable = function(cb) {
    var data = new Serializer().deserialize(cb.getResult())
    var len = data.results.length
    Element.removeChildNodes(this.resultsHolder);
    var exp = /(<.*?>)|(<\/.*?>)|(\[.*?\]).*?(\[\/.*?\])/g;

    var container = Element.create("div")

    for (var i = 0, currentTerm; i < len; i++) {
        currentTerm = data.results[i]
        currentTerm.definition = currentTerm.definition.replace(/\&quot;/g, '"');
        currentTerm.definition = currentTerm.definition.replace(/\&gt;/g, '>');
        currentTerm.definition = currentTerm.definition.replace(/\&lt;/g, '<');
        var definitionDisplay = "";

        var strippedDef = currentTerm.definition.replace(exp, "")

        if (strippedDef && strippedDef.length > 0) {
            definitionDisplay = strippedDef.length > 150 ? strippedDef.substr(0, 135) + "..." : strippedDef;
        } else {
            if (currentTerm.related != -32768) {
                var cleanTerm = currentTerm.related.replace(/\_/gi, '~').replace(/\-/gi, '_').replace(/\s/gi, '-');

                definitionDisplay = 'See <a href="term.asp?t=' + encodeURIComponent(cleanTerm) + '">' + currentTerm.related + '</a>';
            } else {
                definitionDisplay = 'The definition for the term ' + currentTerm.term + ' is currently not available';
            }
        }

        Element.create("div", { "class": "resultsDiv" }, [
			Element.create("div", { "class": "termResultHolder" }, [
				Element.create("a", { "class": "termHeader", "href": "term.asp?t=" + encodeURIComponent(currentTerm.term) }, [currentTerm.term])
			]),
			Element.create("div", { "class": "defResultsHolder" }, [
				Element.create("p", {}, [definitionDisplay])
			])
		], container)
        Element.create("div", { "style": "clear:both" }, [], container)
    }
    Element.addChild(this.resultsHolder, container);
}	

var termSearchPaging = new TermSearchPaging_class();
	termSearchPaging.init();
/*
FILE CONCAT ADD FILE
PATH: /ft/resources/client/events.draggable.js
*/
EventManager.prototype.draggable = function(oArgs) {
            
	var ret = {};
	var self = this;
	
	var newUp = function() {
		self.remove(self.dragEvent);
		self.remove(self.upEvent);

		self.dragEvent = null;
		self.upEvent = null;
		oArgs.up.apply(this, arguments);
	}
	
	var newMove = function () {
		
		oArgs.move.apply(oArgs.context, arguments);

		if(!self.upEvent) {
			self.upEvent = self.add({
				element:arguments[1]
				,type:"mouseup"
				,handler:newUp
				,context:oArgs.context
			});
		}
	}

	var move = function() {
		if(!self.dragEvent){
			self.dragEvent = self.add({
				element:document
				,type:"mousemove"
				,handler:newMove
				,context:oArgs.context
			});
		}
	}

	var newDown = function() {
		oArgs.down.apply(this,  arguments);
		move();
	}
	
	var down = this.delegate(oArgs.parent, "mousedown", {

		selector: oArgs.selector
		,handler : newDown
		,context : oArgs.context
	});
	
	ret.down = down;

	if(oArgs.over) {
				
		var over = this.delegate(oArgs.parent, "mouseover", {
		
			 selector: oArgs.selector
			,handler : oArgs.over
			,context : oArgs.context
			,dynamicEvent : oArgs.dynamicEvent
		});
		
		ret.over = over;
	}

	return  ret;
}
