

// var tabbase="../images/" + $(strScreen).innerHTML + "/";
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

isLowerCaseGlossary = 0;

// Set up to run the "captureMousePosition" function whenever mouse moves
if (document.layers) { // Netscape
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
    document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
    document.onmousemove = captureMousePosition;
}
// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

function captureMousePosition(e) {
    if (document.layers) {
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
}


function make_glossary(svalue){
	if (svalue.charAt(svalue.length - 1) == "|") svalue = svalue.substr(0,svalue.length - 1);
	var sdata=svalue.split("|");
	this.contents=new Array()
	for (var i=0;i<sdata.length;i++){
		var g = new glossary_item(sdata[i]);
		this.contents[this.contents.length]=g;
	}
	this.get=show_glossary_item;
	return this;
}

function glossary_item(svalue){
	if (svalue.charAt(svalue.length - 1) == "^") svalue = svalue.substr(0,svalue.length - 1);
	var sdata=svalue.split("^");
	this.id=sdata[0];
	this.title=sdata[1];
	this.narrative=sdata[2];
	this.html=glossary_html;
	return this;
}
function show_glossary_item(id){
	for (var i=0;i<this.contents.length;i++){
		if (this.contents[i].id==id){
			return this.contents[i].html();
		}
	}
}
function glossary_html(){
	var html="<a class='tbbold'>" + this.title + "<\/a><br><br>"
	html+='<a class="tbpara">' + this.narrative + '<\/a>'
	//alert( this.narrative);
	return html;
}
function apply_glossary(){
	var el=get_el("centrebar");
    var gbuffer=el.innerHTML;
    var s_end="</a";
    var s_end2="</A";
    var s_start="<a";
    var s_start2="<A";
    var s_class="class";
    var i=0;
    if (!glossary){return false;}
	//glossary.contents[0].title = "Dolby Digital";

    for (i=0;i<glossary.contents.length;i++){ 
        var strReplace = ' <a  href="javascript: show_glossary(\'' + glossary.contents[i].id + '\')" class="glossary">' + glossary.contents[i].title + '</a> ';
		//var strReplace = ' <a  href="javascript: show_glossary(\'' + glossary.contents[i].id + '\')" class="glossary">'+ "ggggg"+ '</a> ';
		var strReplaceLower = ' <a  href="javascript: show_glossary(\'' + glossary.contents[i].id + '\')" class="glossary">' + glossary.contents[i].title.toLowerCase() + '</a> ';
		var found=false;
        var title_pos=1;
        var a_start=1;
        var a_end=1;
        var a_class=1;
		var localIsLowerCaseGlossary = 0;
		do{			
			title_pos = find_next_all(glossary.contents[i].title,glossary.contents[i].title.toLowerCase(),title_pos,gbuffer);
			localIsLowerCaseGlossary = isLowerCaseGlossary;
			if(title_pos!=-1){//Valid characters before a glossary item = ( --" "--"("--"/"--"\"--">"--""" )				
				if ((gbuffer.charAt(title_pos-1) != "\r")&&(gbuffer.charAt(title_pos-1) != "\n")&&(gbuffer.charAt(title_pos-1) != " ")&&(gbuffer.charAt(title_pos-1) != "(")&&(gbuffer.charAt(title_pos-1) != "/")
					&&(gbuffer.charAt(title_pos-1) != ">")&&(gbuffer.charAt(title_pos-1) != "\\")&&(gbuffer.charAt(title_pos-1) != "\"")){					
					title_pos=-1;
				}
				
				if(title_pos!=-1){//Valid characters after a glossary item = (" ",")",",",".","/","\","<",""")
					if ((gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "\r")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "\n")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != " ")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != ")")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != ",")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != ".")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "/")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "\\")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "\"")&&(gbuffer.charAt(title_pos + glossary.contents[i].title.length) != "<")){
					   title_pos=-1;
					}
				
				}		
			 }				
			
			if(title_pos!=-1){				
                while( (parseInt(a_end)!=-1) && (parseInt(a_end)<parseInt(title_pos)) )//find next link end tag
				{					
                    a_end = find_next_all(s_end,s_end2,a_end,gbuffer);												
				}
                    
                while( (parseInt(a_start)!=-1)&& (parseInt(a_start)<parseInt(title_pos)) ) //find next link start tag
				{
					a_start = find_next_all(s_start,s_start2,a_start,gbuffer);
				}
                    
                while( (parseInt(a_class)!=-1) && (parseInt(a_class)<parseInt(title_pos)) ){ //find previous class		
					var a_class_previous = a_class
                    a_class = find_next(s_class,a_class,gbuffer);
                }
				
				a_class = get_class(a_class_previous,gbuffer);
				do{
					a_class = a_class.replace("\"","");
				}while(a_class.indexOf("\"")!=-1);	
               
			  	if (((title_pos > a_end )&&(title_pos > a_start))||((title_pos < a_end )&&(title_pos < a_start))||(parseInt(a_end)==-1)){
					if (((a_class.toLowerCase() == "tbpara")||(a_class.toLowerCase() == "content_image")||(a_class.toLowerCase() == "contentadvert")||(a_class.toLowerCase() == "glossary"))&&((parseInt(a_start)<parseInt(a_end)) || (parseInt(a_end)==-1) )){
			       		var temp = gbuffer.slice(0,title_pos)  ;                 
                    	var tempr= gbuffer.slice(title_pos +glossary.contents[i].title.length+1,gbuffer.length);
						if (localIsLowerCaseGlossary == 0)
                    		gbuffer =   temp + strReplace +tempr;
						else
					 		gbuffer =   temp + strReplaceLower + tempr;
                    	found=true; //use to break loop if just one entry needed
					}
                }
            }
            a_start=1;
            a_end=1;
            a_class=1;
			isLowerCaseGlossary = 0
        }while(title_pos !=-1);				
    }
    var el=get_el("centrebar");
	el.innerHTML=gbuffer;
}
function find_next_all(vtofind, vtofind2, vlastpos, vstring){
	
	vlastpos1 = find_next(vtofind, vlastpos, vstring);
    vlastpos2 = find_next(vtofind2, vlastpos, vstring);
	if(((parseInt(vlastpos1) < parseInt(vlastpos2))) && (parseInt(vlastpos1) !=-1 ))
	{
		isLowerCaseGlossary = 0;
		return vlastpos1;	
	}
    else
	{
		if (parseInt(vlastpos2) ==-1)
		{
			isLowerCaseGlossary = 0;
			return vlastpos1;				
		}
		else	
		{
			isLowerCaseGlossary = 1;
			return vlastpos2;			
		}		
	}
}

function find_next(vtofind, vlastpos, vstring){
	vlastpos = vstring.indexOf(vtofind,vlastpos+1);
	return vlastpos;
}

function get_class(vtagpos,vstring){
	var start=find_next('=',vtagpos,vstring);
	var end=find_next(' ',start,vstring);
	if (end > find_next('>',start,vstring))
    	end=find_next('>',start,vstring);
	var s_class= vstring.slice(start+1,end);
	return s_class;
}

function show_glossary(id){

	//If the glossary is lareday visible then exit this function
	var el=get_style("gloss");
	if (el.visibility=='visible')return void[0];
	
	var html=glossary.get(id);
	var el=get_el("gloss");

	var sContainer = '';
	sContainer += '<table onclick="hide_glossary();" class="helpGlossaryTable" cellpadding="0" cellspacing="0" border="0">'
	+ '		<tr><td align="center" bgcolor="EFEFEF" height="15" class="glossary_link">Click To Close</td></tr>'
	+ '		<tr ><td  align="center" class="helpGlossaryContent">'+ html +'</td></tr>'
	+ '</table>';
		
	el.innerHTML=sContainer;

	//var logoHeight = 127;
    logoHeight=0;
	var gWidth = 300;
	var gHeight = 300;
	var browserWidth = document.body.clientWidth;
	var browserHeight = document.body.clientHeight;
	
	var x = xMousePos;	
	var y = yMousePos;

	var diff = browserWidth - (x);
	if (diff < 0) x+=diff-10;

	var diff = browserHeight - (y+gHeight+logoHeight);
	if (diff < 0) y+=diff-10;
	y =  y + document.body.scrollTop
	var el=get_style("gloss");
	el.visibility='visible';
	el.left = x;
	el.top = y;
    //timer=setTimeout(hide_glossary,2500);
}

function hide_glossary(){
	var el=get_el("gloss");
	el.innerHTML = "";

	var el=get_style("gloss");
	el.visibility='hidden';

}
