// -----------------------------------------------------------------------------
// YesJapan Globals
var REV_DIR = 'YJ6';
var REV_FOLDER = '/'+REV_DIR+'/';

// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 124;
// -----------------------------------------------------------------------------
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

browser_name = navigator.appName;
browser_version = parseFloat(navigator.appVersion); 
if (browser_name =="Netscape" && browser_version >= 3.0) { roll = 'true'; }
else if (browser_name =="Microsoft Internet Explorer" && browser_version >= 3.0) { roll = 'true'; }
else { roll = 'false'; }
function msover1(img,ref) { if (roll == 'true') { document.images[img].src = ref; } }
function msout1(img,ref)  { if (roll == 'true') { document.images[img].src = ref; } }






function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
	curleft = obj.offsetLeft;
	curtop = obj.offsetTop;
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
}
return [curleft,curtop];
}


function confirmThenGo(message,link) {
var confirmed = confirm(message);

if (confirmed)
parent.location = link;
else
return false;
}



function changeNotificationStatus(id,new_status) {

if (new_status == 1)
var notification ="<input type=checkbox value=1 checked onclick=\"changeNotificationStatus('"+id+"',0); return false;\"> <font color=green><b>ON</b></font>";
else
var notification ="<input type=checkbox value=1 onclick=\"changeNotificationStatus('"+id+"',1); return false;\"> <font color=red><b>OFF</b></font>";

document.getElementById("notify"+id).innerHTML = notification;

var pars ="id="+id+"&new_status="+new_status+"&remote_func=changeNotificationStatus";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Request(url,{method:'post',parameters:pars});

}


function openSearchDiv(div) {

var divs = new Array('dictionary','lessons','pages','questions','videos','answers','grammar');

for(i=0;i<divs.length;i++)
{
	if (divs[i] == div)
	{
	document.getElementById(divs[i]).style.display = 'block';
	document.getElementById(divs[i]+"_link").style.height = '20px';
	document.getElementById(divs[i]+"_link").style.top = '45px';
	}
	else
	{
	document.getElementById(divs[i]).style.display = 'none';
	document.getElementById(divs[i]+"_link").style.height = '15px';
	document.getElementById(divs[i]+"_link").style.top = '50px';
	}
}
}



function updateQuestionHandler(id,handler) {
var pars ="id="+id+"&handler="+handler+"&remote_func=updateQuestionHandler";
var url = REV_FOLDER +"AJAXfunctions.php";
// new Ajax.Request(url,{method:'post',parameters:pars});
new Ajax.Updater('process', url,{evalScripts:true, method:'get',parameters:pars});
}


function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version ="WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess ="always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version ="WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version ="WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ?" 2.0" :"";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split("");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision =="") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] =="d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] =="r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor +"." + versionMinor +"." + versionRevision;
			// alert("flashVer="+flashVer);
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
// alert("FIXING PROBLEMS:" + versionStr);
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given"WIN 2,0,0,11"
			tempArray         = versionStr.split(""); 	// ["WIN","2,0,0,11"]
			tempString        = tempArray[1];			//"2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
	// alert("YourFlash="+versionMinor+" ("+parseFloat(reqMinorVer)+")")

		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {

				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
    var str = '';
    if (isIE && isWin && !isOpera)
    {
  		str += '<object ';
  		for (var i in objAttrs)
  			str += i + '="' + objAttrs[i] + '" ';
  		for (var i in params)
  			str += '><param name="' + i + '" value="' + params[i] + '" /> ';
  		str += '></object>';
    } else {
  		str += '<embed ';
  		for (var i in embedAttrs)
  			str += i + '="' + embedAttrs[i] + '" ';
  		str += '> </embed>';
    }

    document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments,".swf","movie","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     ,"application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case"classid":
        break;
      case"pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case"src":
      case"movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case"onafterupdate":
      case"onbeforeupdate":
      case"onblur":
      case"oncellchange":
      case"onclick":
      case"ondblClick":
      case"ondrag":
      case"ondragend":
      case"ondragenter":
      case"ondragleave":
      case"ondragover":
      case"ondrop":
      case"onfinish":
      case"onfocus":
      case"onhelp":
      case"onmousedown":
      case"onmouseup":
      case"onmouseover":
      case"onmousemove":
      case"onmouseout":
      case"onkeypress":
      case"onkeydown":
      case"onkeyup":
      case"onload":
      case"onlosecapture":
      case"onpropertychange":
      case"onreadystatechange":
      case"onrowsdelete":
      case"onrowenter":
      case"onrowexit":
      case"onrowsinserted":
      case"onstart":
      case"onscroll":
      case"onbeforeeditfocus":
      case"onactivate":
      case"onbeforedeactivate":
      case"ondeactivate":
      case"type":
      case"codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case"id":
      case"width":
      case"height":
      case"align":
      case"vspace": 
      case"hspace":
      case"class":
      case"title":
      case"accesskey":
      case"name":
      case"tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}





// sound related functions


function replaceSushis(sushi) {
var lightup = sushi;
var output = '';

	while(lightup) {
	output +="<img src=/images/sushi.gif style=\"width:15px;height:19px;border:0;\">";
	lightup--;
	}

	while(++sushi <= 5) {
	output +="<img src=/images/sushi-blank.gif style=\"width:15px;height:19px;border:0;\">";
	}

document.getElementById("allsushis").innerHTML = output;
}

function sushiRankDisplay(sushi) {
var lightup = sushi;
	while(lightup) {
	document.getElementById("sushi"+lightup).src ="/images/sushi.gif";
	lightup--;
	}

	while(++sushi <= 5) {
	document.getElementById("sushi"+sushi).src ="/images/sushi-blank.gif";
	}
}

function sushiRankHover(sushi,voted) {
if (voted > 0)
	document.getElementById("voteline").innerHTML ="You already voted";
	else
	{
		switch(sushi) {
		case 5:
		document.getElementById("voteline").innerHTML ="さいこう！";
		break;

		case 4:
		document.getElementById("voteline").innerHTML ="おもしろい";
		break;

		case 3:
		document.getElementById("voteline").innerHTML ="みてよかった";
		break;

		case 2:
		document.getElementById("voteline").innerHTML ="おもしろくない";
		break;

		case 1:
		document.getElementById("voteline").innerHTML ="ひどい";
		break;
		}
	}
}



function textCounter(countthis,cntfield,maxlimit) {
var display = document.getElementById(cntfield);
var field = document.getElementById(countthis);

if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
display.innerHTML = maxlimit - field.value.length;
}



function deleteVote(media_id) {
var deleteok = confirm("Your vote will be deleted first. Is this okay?");
if (deleteok)
window.open(REV_FOLDER  +"editVote.php?var3="+media_id+"","revote","menubar=no,width=350,height=220,toolbar=no");
else
return false;
}

function recordSushiVote(media_id,sushis) {
if (!sushis)
alert ("You must choose a rank.");
else
{

window.open(REV_FOLDER +"recordSushiVote.php?page=recordvote&var1="+media_id+"&var2="+sushis,"sushivote","menubar=no,width=350,height=220,toolbar=no");
}

}

function recordSushiVoteOLD(media_id,user_id,sushis) {
var comments=prompt("Vote Comments (optional)","");
comments = ued_encode(comments);

if (!sushis)
alert ("You must choose a rank.");
else
{
//alert (media_id +" ---->" + user_id +" ---->" + sushis +" ---->" + comments);
var pars ="page=recordvote&var1="+media_id+"&var2="+sushis+"&var3="+comments+"&var4="+user_id;
var url = REV_FOLDER +"recordSushiVote.php";

new Ajax.Updater('voteline', url,{evalScripts:true, method:'get',parameters:pars});
}

}


function sushiRankMouseout(media_id,total_votes) {
var rankings = (total_votes == 1) ? total_votes +" ranking" : total_votes +" rankings";

if (total_votes > 9)
document.getElementById("voteline").innerHTML ="<a href=\"\"/YJ6/?page=allvotes&var3="+media_id+"\">"+rankings+"</a>";
else
document.getElementById("voteline").innerHTML ="&nbsp;";

}


function openEasyFunctions()
{
var url = REV_FOLDER +"easyFunctionsMenu.php";
document.getElementById("menus").style.display ="none";
document.getElementById("easyfunctions").style.display ="block";
new Ajax.Updater('easyfunctions', url,{evalScripts:true, method:'post'});
}


function reloadVideo(media_id) {
document.getElementById("streaming_video").innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";
var params ="var1="+media_id;
var url = REV_FOLDER +"loadVideoArea.php";
document.getElementById("box_title").innerHTML = document.getElementById("prior_box_title").innerHTML;
new Ajax.Updater('streaming_video',url,{evalScripts:true,method: 'post', parameters: params});
}

function reloadDownloadIcons(media_id) {
var params ="var1="+media_id;
var url = REV_FOLDER +"loadDownloadIcons.php";
new Ajax.Updater('download_icons',url,{evalScripts:true,method: 'post', parameters: params});
}


function reloadVideoAndFavorites(media_id) {
document.getElementById("streaming_video").innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";
document.getElementById("favorite_box").innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";

var params ="var1="+media_id;
var url = "/YJ6/loadVideoArea.php";
document.getElementById("box_title").innerHTML = document.getElementById("prior_box_title").innerHTML;
new Ajax.Updater('streaming_video',url,{evalScripts:true,method: 'post', parameters: params});

setTimeout("var dog=1",3000);
new Ajax.Updater('favorite_box','/YJ6/loadFavoriteArea.php',{evalScripts:true,method: 'post', parameters: params});
}



function openEasyFunctionPopUp(thediv)
{
// createPlayerOld();

if (document.getElementById("nowopen") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data2 = document.createElement("DIV");
data2.innerHTML ="<div id=\"nowopen\" style=\"display:none;\"></div>";
document.body.appendChild(data2);
}

var lastdiv = document.getElementById("nowopen").innerHTML;

document.getElementById("nowopen").innerHTML = thediv;
var thedivop ="op" + thediv;
var thedivsp ="sp" + thediv;
var lastdiv = 'op' + lastdiv;
var movediv = 'move' + lastdiv;
var lastParentDiv = document.getElementById('sp' + lastdiv);
var current = document.getElementById(thedivop).innerHTML;

var url = REV_FOLDER +"easyFunctionPopUp.php";

	if (current)
	document.getElementById(thedivop).innerHTML ="";
	else
	{
	document.getElementById(thedivop).innerHTML ="<img src =/images/sound-loader.gif width=43 height=11 border=0>";
		if (lastdiv && lastParentDiv)
		{
		lastParentDiv.innerHTML ="<div style=position:absolute;z-index:1000; id=\""+movediv+"\></div>";
		new Draggable(movediv);
		}
	var params = 'thediv=' + thediv;
	var ajax = new Ajax.Updater(thedivop,url,{method: 'post', parameters: params});
	}
}


function showMenus()
{
document.getElementById("menus").style.display ="block";
document.getElementById("easyfunctions").style.display ="none";
}



function changeLessonLinkHighlight(linkCourse,linkLess,clicked) {
parent.frames["navi-url"].document.getElementById("course").innerHTML = linkCourse;
parent.frames["navi-url"].document.getElementById("less").innerHTML = linkLess;
parent.frames["navi-url"].document.getElementById("area").innerHTML = clicked;
displayPageNavigation();

var loadedLinks = parent.frames["menu-url"].document.getElementById("loadedLinks").innerHTML;

var links = loadedLinks.split(",");

	for (i=0;i<links.length;i++)
	{
	var thelink = links[i];
		if (thelink)
		{
			if (clicked == thelink)
			{
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="url(/images/course"+linkCourse+"box_midS.png)";
			}
			else
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="";
		}
	}

var pars ="course="+linkCourse+"&less="+linkLess+"&area="+clicked+"&remote_func=updateBookmark";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Request(url,{method:'post',parameters:pars});

} // end of function: changeLessonLinkHighlight


function pausePlaying(arr,playbutton) {
document.getElementById(playbutton).innerHTML ="<a href=# onclick=\"playSoundList('"+arr+"','"+playbutton+"'); return false;\"><img src=/images/play.png width=138 height=35 border=0 alt=\"Play All\"></a>";
thisMovie("flash_player2").silenceSounds();
}


function start_featureX() {
var media_id = document.getElementById("media_id").value;
thisMovie("player1").sendVars(media_id);
}


function start_feature() {
var media_id = document.getElementById("media_id").value;
alert("flash called javascript no problem: media id =" + media_id);
thisMovie("player1").sendVars(media_id);
}

function load_new_video(media_id) {
alert("sendVars called from index.php onLoad(): media id =" + media_id);
thisMovie("player1").sendVars(media_id);
}


function resetSoundButton(arr,playbutton) {
document.getElementById(playbutton).innerHTML ="<a href=# onclick=\"playSoundList('"+arr+"','"+playbutton+"'); return false;\"><img src=/images/play.png width=138 height=35 border=0 alt=\"Play All\"></a>";
thisMovie("flash_player2").clearAllSounds();
}


function playerReady(obj) {
    player = document.getElementById(obj.id);
};



function loadSound(str)
{

createPlayerOld();

var playbutton = '';
thisMovie("flash_player").loadSound(str,playbutton);
}


function playSoundList(arr,playbutton) {
// old makeArrayCall

thisMovie("flash_player2").clearAllSounds();
document.getElementById(playbutton).innerHTML ="<a href=# onclick=\"pausePlaying('"+arr+"','"+playbutton+"'); return false;\"><img src=/images/pause.png width=138 height=35 border=0 alt=\"Pause\"></a>";

	var sounds = arr.split(',');
     thisMovie("flash_player2").loadSoundArray(sounds,playbutton);
}

function stopPlaying(arr,playbutton) {
thisMovie("flash_player2").silenceSounds();
thisMovie("flash_player2").clearAllSounds();
document.getElementById(playbutton).innerHTML ="<a href=# onclick=\"playSoundList('"+arr+"','"+playbutton+"'); return false;\"><img src=/images/play.png width=138 height=35 border=0 alt=\"Play All\"></a>";
}

function makeCall(str)
  {
     thisMovie("flash_player").silenceSounds(str);
  }

function makeClearCall(str)
  {
     thisMovie("flash_player").clearAllSounds(str);
  }


function makeAddCall(str)
  {
     thisMovie("flash_player").addSound(str);
  }


function makePlayCall(str)
  {
     thisMovie("flash_player").playSound(str);
  }


function makeIntervalCall(str)
  {
     thisMovie("flash_player").setPauseInterval(str);
  }


function playerReady(obj) {
    player = document.getElementById(obj.id);
};



if (document.getElementById("sound_player") == null)
{
var soundPlayer = document.createElement("DIV");
soundPlayer.innerHTML = '<div id="sound_player" style="display:inline;"></div>';
document.body.appendChild(soundPlayer);
player = document.getElementById('sound_player');
}
else
player = document.getElementById('sound_player');



function createPlayer() {

var so = new SWFObject('/player/player.swf','player','0','0','9');
so.addParam('allowscriptaccess','always');
so.addParam('flashvars','bufferlength=0&displayclick=none&controlbar=none&stretching=exactfit&repeat=list&provider=sound&item=0');
so.write('sound_player');

}

function pauseSound()
{
document.getElementById('player').sendEvent('PLAY', 'false');
return false;
}

function playSound(str)
{
document.getElementById('player').sendEvent('STOP');
document.getElementById('player').sendEvent('MUTE', 'false');
document.getElementById('player').sendEvent('LOAD', str);
document.getElementById('player').sendEvent('PLAY', 'true');
return false;
}


function playList(str)
{
createPlayer();

ko = new Date();
ji = ko.getTime();

var str = str + "&rnd=" + ji;
player = document.getElementById('player');
player.sendEvent('STOP');
player.sendEvent('MUTE', 'false');
player.sendEvent('LOAD',str);
player.sendEvent('PLAY', 'true');
return false;
}



function playSoundListX(arr)
{
var sounds = arr.split(',');

for(var i = 0; i < sounds.length; i++)
{
thisMovie("flash_player").loadSound(sounds[i]);
}

}



function playSound_ORIGINAL(surl) {
// alert("Sound Url -" + surl);

if (document.getElementById("soundPlayer") == null)
{
var player = document.createElement("DIV");
player.innerHTML ="<div id=\"soundPlayer\" style=\"display:inline;\">HERE IS THE PLAYER</div>";
document.body.appendChild(player);
}
document.getElementById("soundPlayer").innerHTML="<embed src='"+surl+"' hidden=true autostart=true loop=false>";
}

function makeSimpleLoadCall(str)
  {
     thisMovie("flash_player").loadSimpleSound(str);
  }


function makeLoadXMLCall(str)
  {
     thisMovie("flash_player").loadSoundXML(str);
  }


function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}




function callFailed(resp)
{
  alert("Call failed:" + resp.responseText);

}



function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id +" = window.open(URL, '" + id +"', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=400,height=150,left = 440,top = 437');");
}


function opSoundDEMO(soundDiv,popvers,action) {
if (document.getElementById("course")) {
var course = document.getElementById("course").innerHTML
var less = document.getElementById("less").innerHTML
var section = document.getElementById("area").innerHTML
}

var sdata = soundDiv.split('_');
var id = sdata[0];

if (document.getElementById("sound_data") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data = document.createElement("DIV");
data.innerHTML ="<div id=\"sound_data\" style=\"display:none;\"></div>";
document.body.appendChild(data);
}

if (document.getElementById("nowopen") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data2 = document.createElement("DIV");
data2.innerHTML ="<div id=\"nowopen\" style=\"display:none;\"></div>";
document.body.appendChild(data2);
}

var url = REV_FOLDER + 'soundPopUpDEMO.php';
var params = 'soundDiv=' + soundDiv + '&course=' + course + '&less=' + less + '&section=' + section + '&popvers=' + popvers + '&action=' + action;
var lastsound = document.getElementById("sound_data").innerHTML;

document.getElementById("sound_data").innerHTML = soundDiv;
var thediv ="op" + soundDiv;
var thedivSP ="sp" + soundDiv;
var lastdiv = 'op' + lastsound;
var movediv = 'move' + lastsound;
var lastParentDiv = document.getElementById('sp' + lastsound);
var current = document.getElementById(thediv).innerHTML;

	if (current && !action)
	document.getElementById(thediv).innerHTML ="";
	else
	{
	document.getElementById(thediv).innerHTML ="<img src =/images/sound-loader.gif width=43 height=11 border=0>";
		if (lastsound && lastParentDiv)
		{
		lastParentDiv.innerHTML ="<table cellpadding=0 cellspacing=0 border=0 style=position:absolute;z-index:1000; id=\""+movediv+"\"><tr><td id=\""+lastdiv+"\"></td></tr></table>";
		new Draggable(movediv);
		}
	var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
	}

} // end of function: opSoundDEMO (openSound)


function reloadNotebook(category) {

var fullurl = window.location +"";
var theurl = fullurl.split("?");

window.location ="?var4=" + category;

}



function getNoteCategory(afterfunc,soundDiv,popvers,action) {
var params ="afterfunc="+afterfunc+"&soundDiv="+soundDiv+"&popvers="+popvers+"&action="+action+"&remote_func=getNoteCategory";
var url = REV_FOLDER +"AJAXfunctions.php";

document.getElementById('versionChoose').style.display = 'block';
var ajax = new Ajax.Updater('versionChoose',url,{method: 'post', parameters: params});

} // end function getNoteCategory



function opTerm(soundDiv,popvers,action) {
if (document.getElementById("course")) {
var course = document.getElementById("course").innerHTML
var less = document.getElementById("less").innerHTML
var section = document.getElementById("area").innerHTML
}

var sdata = soundDiv.split('_');
var id = sdata[0];

if (document.getElementById("sound_data") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data = document.createElement("DIV");
data.innerHTML ="<div id=\"sound_data\" style=\"display:none;\"></div>";
document.body.appendChild(data);
}

if (document.getElementById("nowopen") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data2 = document.createElement("DIV");
data2.innerHTML ="<div id=\"nowopen\" style=\"display:none;\"></div>";
document.body.appendChild(data2);
}

var url = REV_FOLDER + 'soundPopUp2.php';
var params = 'soundDiv=' + soundDiv + '&course=' + course + '&less=' + less + '&section=' + section + '&popvers=' + popvers + '&action=' + action + '&term=1';
var lastsound = document.getElementById("sound_data").innerHTML;

document.getElementById("sound_data").innerHTML = soundDiv;
var thediv ="op" + soundDiv;
var thedivSP ="sp" + soundDiv;
var lastdiv = 'op' + lastsound;
var movediv = 'move' + lastsound;
var lastParentDiv = document.getElementById('sp' + lastsound);
var current = document.getElementById(thediv).innerHTML;

	if (current && !action)
	document.getElementById(thediv).innerHTML ="";
	else
	{
	document.getElementById(thediv).innerHTML ="<img src =/images/sound-loader.gif width=43 height=11 border=0>";
		if (lastsound && lastParentDiv)
		{
		lastParentDiv.innerHTML ="<table cellpadding=0 cellspacing=0 border=0 style=position:absolute;z-index:1000; id=\""+movediv+"\"><tr><td id=\""+lastdiv+"\"></td></tr></table>";
		new Draggable(movediv);
		}
	var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
	}

} // end of function: opTerm (openSound)



function opQuestion(div,qid,action) {
var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'qid=' + qid + '&action=' + action + '&remote_func=opQuestion';
var ajax = new Ajax.Updater(div,url,{method: 'post', parameters: params});
} // end of function: opQuestion


function opSound(soundDiv,popvers,action) {
if (document.getElementById("course")) {
var course = document.getElementById("course").innerHTML
var less = document.getElementById("less").innerHTML
var section = document.getElementById("area").innerHTML
}

var sdata = soundDiv.split('_');
var id = sdata[0];

if (document.getElementById("sound_data") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data = document.createElement("DIV");
data.innerHTML ="<div id=\"sound_data\" style=\"display:none;\"></div>";
document.body.appendChild(data);
}

if (document.getElementById("nowopen") == null)
{
var theBody = document.getElementsByTagName('body')[0];
var data2 = document.createElement("DIV");
data2.innerHTML ="<div id=\"nowopen\" style=\"display:none;\"></div>";
document.body.appendChild(data2);
}

var url = REV_FOLDER + 'soundPopUp2.php';
var params = 'soundDiv=' + soundDiv + '&course=' + course + '&less=' + less + '&section=' + section + '&popvers=' + popvers + '&action=' + action;
var lastsound = document.getElementById("sound_data").innerHTML;

document.getElementById("sound_data").innerHTML = soundDiv;
var thediv ="op" + soundDiv;
var thedivSP ="sp" + soundDiv;
var lastdiv = 'op' + lastsound;
var movediv = 'move' + lastsound;
var lastParentDiv = document.getElementById('sp' + lastsound);
var current = document.getElementById(thediv).innerHTML;

	if (current && !action)
	document.getElementById(thediv).innerHTML ="";
	else
	{
	document.getElementById(thediv).innerHTML ="<img src =/images/sound-loader.gif width=43 height=11 border=0>";
		if (lastsound && lastParentDiv)
		{
		lastParentDiv.innerHTML ="<table cellpadding=0 cellspacing=0 border=0 style=position:absolute;z-index:1000; id=\""+movediv+"\"><tr><td id=\""+lastdiv+"\"></td></tr></table>";
		new Draggable(movediv);
		}
	var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
	}
openSoundEditor(id,thediv);
} // end of function: opSound (openSound)


function openSoundEditor(id,theOPENdiv) {
var pars ="FLD_id="+id+"&theOPENdiv="+theOPENdiv+"&remote_func=quickSoundEditor";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Updater('soundedit', url,{evalScripts:true, method:'post',parameters:pars});
}

function newpage() {
theurl = document.getElementById("newpage").value;
if (theurl)
parent.location=theurl;
}


function flipDiv(div1,div2) {
var div1 = document.getElementById(div1);
var div2 = document.getElementById(div2);

	if (div1.style.display == 'block')
	{
	div1.style.display = 'none';
	div2.style.display = 'block'; 
	}
	else
	{
	div1.style.display = 'block';
	div2.style.display = 'none'; 
	}
}


function toggleDiv2(div){
var theDiv = document.getElementById(div);

if (theDiv.style.display != 'block')
theDiv.style.display = 'block';
else
theDiv.style.display = 'none';
}


function versionListMain(thediv,vers,query_string) {

var params = 'theVers=' + vers +"&thediv=" + thediv +"&script=refreshPage&query_string="+query_string;

var url = REV_FOLDER + 'versionListMain.php';
var ajax = new Ajax.Updater(thediv,url,{evalScripts:true,method: 'get', parameters: params,onComplete:toggleDiv2(thediv)});
}


function versionList(thediv,vers,soundDiv,info,term) {

if (info == '')
var params = 'theVers=' + vers +"&soundDiv=" + soundDiv +"&thediv=" + thediv +"&term=" + term;
else
var params = 'theVers=' + vers +"&soundDiv=" + soundDiv +"&info="+info+"&script=changeLessVers" +"&thediv=" + thediv +"&term=" + term;

var url = REV_FOLDER + 'versionList.php';
var ajax = new Ajax.Updater(thediv,url,{evalScripts:true,method: 'get', parameters: params,onComplete:toggleDiv2(thediv)});
}


function getVersions(versionDiv,currentVers,popvers,changeThisDiv,is_pop) {
var params = 'currentVers=' + currentVers +"&versionDiv=" + versionDiv +"&is_pop=" + is_pop +"&popvers=" + popvers +"&changeThisDiv="+changeThisDiv;

var url = REV_FOLDER + 'getVersions.php';
var ajax = new Ajax.Updater(versionDiv,url,{evalScripts:true,method: 'get', parameters: params,onComplete:toggleDiv2(versionDiv)});
}




function updateOpen(clicked) {
var current_open = document.getElementById("nowopen").innerHTML;
document.getElementById("nowopen").innerHTML = clicked;
}





function changeVers(thediv,vers,soundDiv,info,term) {

if (document.getElementById("course") != undefined)
{
var course = document.getElementById("course").innerHTML
var less = document.getElementById("less").innerHTML
var area = document.getElementById("area").innerHTML
}
else
{
var course = '';
var less = '';
var area = '';
}
switch (vers) {
case 'mix':
var disp_vers = 'Progressive'
break

case 'romaji':
var disp_vers = 'Romaji'
break

case 'hira':
var disp_vers = 'Hiragana Only'
break

case 'hirakata':
var disp_vers = 'Hiragana / Katakana'
break

case 'kanji':
var disp_vers = 'Kanji Plus'
break

}

if (info)
{
var url = REV_FOLDER + 'changeVers.php';
var params = 'theVers=' + vers +"&course="+course+"&less="+less+"&info="+info+"&term="+term;
var ajax = new Ajax.Updater(thediv,url,{evalScripts:true,method: 'get', parameters: params,onComplete:refreshPage(course,less,area)});

// alert("Lesson version changed to:" + disp_vers);
}
else
{
// alert("Popup version changed to:" + disp_vers);
var url = REV_FOLDER + 'changeVers.php';
var params = 'theVers=' + vers+"&term="+term;
new Ajax.Request(url,{evalScripts:true,method: 'post', parameters: params});

var current_sound_div = 'op'+soundDiv;

document.getElementById(current_sound_div).innerHTML ="";
if (term)
opTerm(soundDiv,vers,'');
else
opSound(soundDiv,vers,'');

}
}


function changeVersMain(thediv,vers,query_string) {

var url = REV_FOLDER + 'changeVers.php';
var params = 'theVers=' + vers +"&info=1";
new Ajax.Request(url,{evalScripts:true,method: 'post', parameters: params});

setTimeout(refreshMain(query_string),1000);
}


function displayPageNavigation() {
var vers = parent.frames["navi-url"].document.getElementById("vers").innerHTML;
var course = parent.frames["navi-url"].document.getElementById("course").innerHTML;
var less = parent.frames["navi-url"].document.getElementById("less").innerHTML;
var area = parent.frames["navi-url"].document.getElementById("area").innerHTML;


var pars ="course="+course+"&less="+less+"&area="+area+"&vers="+vers+"&remote_func=pageNavigation";
//parent.frames["menu-url"].document.getElementById("what").innerHTML = pars;
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Request(url,{method:'post',parameters:pars,onSuccess: assignNextLast});
}

function assignNextLast(resp) {
var nextlast = resp.responseText;
var data = nextlast.split('^');

var lastCourse = data[0];
var lastLess = data[1];
var lastArea = data[2];

var nextCourse = data[3];
var nextLess = data[4];
var nextArea = data[5];

var lastLink = data[6];
var nextLink = data[7];


var loadedLinks = parent.frames["menu-url"].document.getElementById("loadedLinks").innerHTML;
var links = loadedLinks.split(",");
var course = parent.frames["menu-url"].document.getElementById("course").innerHTML;
var less = parent.frames["menu-url"].document.getElementById("less").innerHTML;

if (!lastCourse || !lastLess)
parent.frames["menu-url"].document.getElementById("lastless").style.display="none";
else
{
parent.frames["menu-url"].document.getElementById("lastless").style.display="block";
	if (course != lastCourse || less != lastLess)
	{
	parent.frames["menu-url"].document.getElementById("lastless").href ="YesJapan.php?course="+lastCourse+"&less="+lastLess+"&rinku="+lastArea;
	parent.frames["menu-url"].document.getElementById("lastless").target ="_parent";
	}
	else
	{
	parent.frames["menu-url"].document.getElementById("lastless").onclick = function() {changeLessonLinkHighlight(lastCourse,lastLess,lastArea)}
	parent.frames["menu-url"].document.getElementById("lastless").href ="\"lesson_functions.php?course="+lastCourse+"&less="+lastLess+"&rinku="+lastArea;
	parent.frames["menu-url"].document.getElementById("lastless").target ="lesson-url";
	}
}

if (!nextCourse || !nextLess)
parent.frames["menu-url"].document.getElementById("nextless").style.display="none";
else
{

parent.frames["menu-url"].document.getElementById("nextless").style.display="block";
	if (course != nextCourse || less != nextLess)
	{
	parent.frames["menu-url"].document.getElementById("nextless").href ="YesJapan.php?course="+nextCourse+"&less="+nextLess+"&rinku="+nextArea;
	parent.frames["menu-url"].document.getElementById("nextless").target ="_parent";
	}
	else
	{
	parent.frames["menu-url"].document.getElementById("nextless").onclick = function() {changeLessonLinkHighlight(nextCourse,nextLess,nextArea)}
	parent.frames["menu-url"].document.getElementById("nextless").href ="\"lesson_functions.php?course="+nextCourse+"&less="+nextLess+"&rinku="+nextArea;
	parent.frames["menu-url"].document.getElementById("nextless").target ="lesson-url";
	}
}

};


function changeHighlightOnly(linkCourse,clicked) {
var loadedLinks = parent.frames["menu-url"].document.getElementById("loadedLinks").innerHTML;

var links = loadedLinks.split(",");

	for (i=0;i<links.length;i++)
	{
	var thelink = links[i];
		if (thelink)
		{
			if (clicked == thelink)
			{
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="url(/images/course"+linkCourse+"box_midS.png)";
			}
			else
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="";
		}
	}

} // end of function: changeHighlightOnly




function loadLessonAreaXXX(tolink,clicked,linkCourse,linkLess) {
var loadedLinks = parent.frames["menu-url"].document.getElementById("loadedLinks").innerHTML;
var links = loadedLinks.split(",");
var course = parent.frames["menu-url"].document.getElementById("course").innerHTML;
var less = parent.frames["menu-url"].document.getElementById("less").innerHTML;
parent.frames["lesson-url"].location=tolink;

if (course != linkCourse || less != linkLess)
parent.frames["menu-url"].location='JapaneseFromZeroMenu.php?course='+linkCourse+'&less='+linkLess+'&rinku='+clicked;
else
{
	for (i=0;i<links.length;i++)
	{
	var thelink = links[i];
		if (thelink)
		{
			if (clicked == thelink)
			{
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="url(/images/course"+course+"box_midS.png)";
			}
			else
			parent.frames["menu-url"].document.getElementById(thelink).style.background ="";
		}
	}
}
parent.frames["navi-url"].document.getElementById("course").innerHTML = linkCourse;
parent.frames["navi-url"].document.getElementById("less").innerHTML = linkLess;
parent.frames["navi-url"].document.getElementById("area").innerHTML = clicked;

var pars ="course="+course+"&less="+less+"&area="+clicked+"&remote_func=updateBookmark";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Request(url,{method:'post',parameters:pars});



displayPageNavigation();
};


function encodeUrl(s) {
return encodeURIComponent(s).replace(/%20/, '+').replace(/(.{0,3})(%0A)/g,function(m, p1, p2) {return p1+(p1=='%0D'?'':'%0D')+p2;});
};

function reload(frame) {
parent.frames[frame].location.reload(true);
}

function loadWindows(link)
{
// parent.frames["menu-url"].location='staff/multiMiniSoundLookup.php';
parent.frames["lesson-url"].location=link;
};

function loadSoundEditor(link,nogroup)
{
var group = document.getElementById("FLD_data1").value;
// parent.frames["menu-url"].location='staff/multiMiniSoundLookup.php';
if (nogroup)
parent.frames["lesson-url"].location=link;
else
parent.frames["lesson-url"].location=link+"&group="+group;
};


function changeAdminLock(user_id,lock) {
var vers = document.getElementById("vers").innerHTML;
var course = document.getElementById("course").innerHTML;
var less = document.getElementById("less").innerHTML;
var area = document.getElementById("area").innerHTML;

var pars ="theid="+user_id+"&lock="+lock+"&remote_func=changeAdminLock";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Updater('lessonMenu',url,{evalScripts:true, method:'post',parameters:pars});
alert ("Turning Admin_Lock to: '" + lock +"' for User Id:" + user_id);
parent.location='YesJapan.php?course='+course+'&less='+less+'&rinku='+area;

}



function changeMenu(opendiv) {
if (parent.frames["menu-url"] == undefined)
var menuurl = document;
else
var menuurl = parent.frames["menu-url"].document;

var notSelColor ="#B9B9B9";
var selColor = menuurl.getElementById("coursecolor").innerHTML;


switch (opendiv) {
case"pics":
menuurl.getElementById("pics").style.display ="block";
menuurl.getElementById("picslink").style.backgroundColor = selColor;

menuurl.getElementById("easysound").style.display ="none";
menuurl.getElementById("easysoundlink").style.backgroundColor = notSelColor;

menuurl.getElementById("links").style.display ="none";
menuurl.getElementById("linkslink").style.backgroundColor = notSelColor;

if (menuurl.getElementById("links"))
{
menuurl.getElementById("links").style.display ="none";
menuurl.getElementById("linkslink").style.backgroundColor = notSelColor;
}
break;

case"easysound":
menuurl.getElementById("pics").style.display ="none";
menuurl.getElementById("picslink").style.backgroundColor = notSelColor;

menuurl.getElementById("easysound").style.display ="block";
menuurl.getElementById("easysoundlink").style.backgroundColor = selColor;

if (menuurl.getElementById("links"))
{
menuurl.getElementById("links").style.display ="none";
menuurl.getElementById("linkslink").style.backgroundColor = notSelColor;
}
break;

case"links":
menuurl.getElementById("pics").style.display ="none";
menuurl.getElementById("picslink").style.backgroundColor = notSelColor;

menuurl.getElementById("easysound").style.display ="none";
menuurl.getElementById("easysoundlink").style.backgroundColor = notSelColor;

menuurl.getElementById("links").style.display ="block";
menuurl.getElementById("linkslink").style.backgroundColor = selColor;
break;
}

}


function closeQuestion(id,type) {
var pars ="id="+id+"&type=" + type +"&remote_func=closeQuestion";
var url = REV_FOLDER +"AJAXfunctions.php";
// setTimeout(parent.location=REV_FOLDER + 'kanako',2000);
new Ajax.Updater('closed', url,{method:'post',parameters:pars});
}


function markAsKnownBug(id) {
var pars ="id="+id+"&remote_func=markAsKnownBug";
var url = REV_FOLDER +"AJAXfunctions.php";
// setTimeout(parent.location=REV_FOLDER + '?page=kanako',2000);
new Ajax.Updater('closed', url,{method:'post',parameters:pars});
}







function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
// add a zero in front of numbers<10
m=checkTime(m);
s=checkTime(s);
return(h+":"+m+":"+s);
}

function checkTime(i)
{
if (i<10)
  {
  i="0" + i;
  }
return i;
}

function showMessage(message,color) {
	if (parent.frames["menu-url"].document.getElementById("messageArea"))
	{
	var box = parent.frames["menu-url"].document.getElementById("messageArea");
	var text = parent.frames["menu-url"].document.getElementById("messageText");
	text.innerHTML = startTime() +"<br>"+ message;
	box.style.display = 'block';
	box.style.border = '2px';
	box.style.borderColor = color;
	box.style.borderStyle = 'solid';
	}
}

function submitSoundForm(theOPENdiv)
{

var elem = document.getElementById('quickSoundForm').elements;

var str = '';
for(var i = 0; i < elem.length; i++)
{
if (elem[i].type == 'radio' || elem[i].type == 'checkbox')
	{
	if (elem[i].checked)
	str +="YJSP" + elem[i].name +"YJCM"+elem[i].value;
	}
	else
	{
	str +="YJSP" + elem[i].name +"YJCM"+elem[i].value;
	}
}

//alert(str);
str = ued_encode(str);
// var pars ="vars=" + str;

var pars ="&vars=" + str+"&remote_func=quickSoundEditor";

var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Updater('soundedit', url,{evalScripts:true, method:'post',parameters:pars});

// showMessage('Sound was saved!','green');
// document.getElementById(theOPENdiv).innerHTML = '';
// document.getElementById(theOPENdiv).style.display = 'none';
}

function logOutUser(cookie,returnpage) {
var params ="sid="+cookie+"&remote_func=logOutUser";
var url = REV_FOLDER +"AJAXfunctions.php";
new Ajax.Request(url,{method:'post',parameters:params});
alert("You have been logged out.");
parent.location = returnpage;
};

function nt(id,course,vers,box_length,easyword,kanri,random,u_id,action,course,vers) {
if(id) {
var url = REV_FOLDER + 'soundPopUp2.php';
var params = 'id=' + id + '&u=' + u_id + '&action=' + action + '&course=' + course + '&vers=' + vers+ '&random=' + random + '&easyword=' + easyword + '&box_length=' + box_length;

var thediv = 'op' + random;

var ajax = new Ajax.Updater(thediv,url,{evalScripts:true,method: 'post', parameters: params});
}
} // end: nt


function getCourseLessons(course) {
if(course) {
var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'course=' + course +"&remote_func=getCourseLessons";
document.getElementById("areaChoice").innerHTML ="";
document.getElementById("partChoice").innerHTML ="";

var ajax = new Ajax.Updater('lessonChoice',url,{evalScripts:true,method: 'post', parameters: params});
}
}

function createLink() {
var course = document.getElementById("LINKcourse").value;
var less = document.getElementById("LINKless").value;
var area = document.getElementById("LINKarea").value;
var part = document.getElementById("LINKpart").value;
if (part)
var total_link = course +"," + less +"," + area +"," + part;
else
var total_link = course +"," + less +"," + area;

final_link ="<easylesson lesson="+total_link+">";


document.getElementById("lessonLink").value = final_link;
copy('lessonLink');

var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'total_link=' + total_link +"&remote_func=displayEasyLink";
var ajax = new Ajax.Updater('linkBox',url,{evalScripts:true,method: 'post', parameters: params});
}


function getLessonAreas(course,less) {
if(course && less) {
var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'course=' + course + '&less=' + less +"&remote_func=getLessonAreas";
document.getElementById("partChoice").innerHTML ="";

var ajax = new Ajax.Updater('areaChoice',url,{evalScripts:true,method: 'post', parameters: params});
}
}


function getLessonParts(course,less,area) {
if(course && less && area) {
var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'course=' + course + '&less=' + less + '&area=' + area +"&remote_func=getLessonParts";
document.getElementById("partChoice").innerHTML ="";

var ajax = new Ajax.Updater('partChoice',url,{evalScripts:true,method: 'post', parameters: params});
}
}


function apply_add_ajax_search() {

		// Find the search box in the DOM
		var theElement = document.getElementById('sound_search');
		
		// Create a function for when the user presses a key
		theElement.onkeyup = function(){ search_delay_sounds(this); };
}

function apply_add_ajax_search_student() {

		// Find the search box in the DOM
		var theElement = document.getElementById('sound_search');
		
		// Create a function for when the user presses a key
		theElement.onkeyup = function(){ search_delay_sounds_student(this); };
}


function search_delay_pictures(element) {

	// Create a function to get the search results
	var func = function() { getPictures(0); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}

function search_delay_pictures_student(element) {

	// Create a function to get the search results
	var func = function() { getPictures_student(0); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}


function getPictures(start) {
var search = document.getElementById("search").value;
search = search.replace("%","P_ERCENT");

var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'search=' + search +"&start=" + start +"&remote_func=searchPictures";
var thediv ="pictures";
document.getElementById(thediv).style.display="block";
var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
}

function getPictures_student(start) {
var search = document.getElementById("search").value;
search = search.replace("%","P_ERCENT");

var url = REV_FOLDER + 'AJAXfunctions.php';
var params = 'search=' + search +"&start=" + start +"&remote_func=searchPictures&student=1";
var thediv ="pictures";
document.getElementById(thediv).style.display="block";
var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
}

function search_delay_sounds(element) {
	// Create a function to get the search results
	var func = function() { getSounds(0); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}

function search_delay_sounds_student(element) {
	// Create a function to get the search results
	var func = function() { getSounds_student(0); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}


function getSounds(start) {
var rawcheck = document.getElementById("raw").checked;
if (rawcheck == true)
var raw = 1;
else
var raw = 0;

var search = document.getElementById("sound_search").value;
var course = document.getElementById("sound_course").value;
var less = document.getElementById("sound_less").value;
search = search.replace("%","P_ERCENT");
var url = REV_FOLDER + 'AJAXfunctions.php';
if (raw)
var params = 'search=' + search +"&start=" + start +"&course=" + course +"&less=" + less +"&remote_func=searchRawSounds";
else
var params = 'search=' + search +"&start=" + start +"&course=" + course +"&less=" + less +"&remote_func=searchSounds";
var thediv ="sounds";
document.getElementById(thediv).style.display="block";
var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
}



function getSounds_student(start) {
var rawcheck = document.getElementById("raw").checked;
if (rawcheck == true)
var raw = 1;
else
var raw = 0;

var search = document.getElementById("sound_search").value;
var course = document.getElementById("sound_course").value;
var less = document.getElementById("sound_less").value;

for (i=0;i<document.sound_query_form.anywhere.length;i++){
	if (document.sound_query_form.anywhere[i].checked==true){
	var anywhere = document.sound_query_form.anywhere[i].value;
	document.sound_query_form.anywhere[i].checked = true;
	}
	else
	document.sound_query_form.anywhere[i].checked = false;
}

search = search.replace("%","P_ERCENT");
var url = REV_FOLDER + 'AJAXfunctions.php';
if (raw)
var params = 'search=' + search +"&start=" + start +"&anywhere=" + anywhere +"&course=" + course +"&less=" + less +"&remote_func=searchRawSounds";
else
var params = 'search=' + search +"&start=" + start +"&anywhere=" + anywhere +"&course=" + course +"&less=" + less +"&remote_func=searchSounds&student=1";
var thediv ="sounds";

document.getElementById(thediv).style.display="block";
document.getElementById(thediv).innerHTML ="<div style=\"border: 1px solid black;padding:5px;\"><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>searching for <b>"+search+"</b>...</div>";
var ajax = new Ajax.Updater(thediv,url,{method: 'post', parameters: params});
}

function lessonHelpMenu(var4,div) {

if (document.getElementById(div).style.display =="block")
document.getElementById(div).style.display ="none";
else
{
var params = 'var4=' + var4 +"&div=" + div;
var thediv = div;

var url = REV_FOLDER + 'lessonHelpMenu.php';
var ajax = new Ajax.Updater(thediv,url,{evalScripts:true,method: 'get', parameters: params});

document.getElementById(div).style.display ="block";
}
}




function refreshPage(course,less,rinku) {
parent.document.location ="YesJapan.php?course="+course+"&less="+less+"&rinku="+rinku;
}


function addPicData(id,sound,tags) {
$('picdata').value = '';

if (sound != 0)
var easypicData = '<easypic id='+id+' sound='+sound+'>'+tags+'</easypic>';
else
var easypicData = '<easypic id='+id+'>'+tags+'</easypic>';
$('picdata').value = easypicData;
document.getElementById("pictures").style.display="none";

copy('picdata');

var div ="picBox";
var pars ="id="+id;
var url = REV_FOLDER +"displayPic.php";
new Ajax.Updater(div, url,{method:'post',parameters:pars});

}


function changeColor(color)
{
id = $('soundIDdata').value;
tags = $('generated_tags').value;

document.getElementById("sound_color").value=color;
document.sound_query_form.iro.value = color;

var theone
for (i=0;i<document.sound_query_form.iro.length;i++){
if (document.sound_query_form.iro[i].value==color){
document.sound_query_form.iro[i].checked = true;
break //exist for loop, as target acquired.
}
}
addSoundData(id,tags,color)
}



function addSoundData(id,tags,type,term) {
$('generated_snippet').value = '';
$('soundIDdata').value = id;
var type = $('sound_color').value;
if (!type)
var type = 'blue';

if (term == undefined || !term)
{
var idpart ="id="+id;
var pars ="id="+id+"&type="+type;
}
else
{
var idpart ="id="+id+" term=1";
var pars ="term="+id+"&type="+type;
}
if (type != 'none')
var easywordData = '<easyword '+idpart+' type='+type+'>'+tags+'</easyword>';
else
var easywordData = '<easyword '+idpart+'>'+tags+'</easyword>';


$('generated_snippet').value = easywordData;
$('generated_tags').value = tags;
copy('generated_snippet');

document.getElementById("sounds").style.display ="none";

var div ="soundBox";
var url = REV_FOLDER +"displaySound.php";
new Ajax.Updater(div, url,{method:'post',parameters:pars});

}



function copy(thediv) {
inElement = document.getElementById(thediv);
  if (inElement.createTextRange) {
    var range = inElement.createTextRange();
    if (range && BodyLoaded==1)
      range.execCommand('Copy');
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="\"_clipboard.swf" FlashVars="clipboard='+inElement.innerHTML+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}



function changeButton(id,btn1,btn2) {
var current = document.getElementById(id).src;
if (current == btn1)
document.getElementById(id).src = btn2;
else
document.getElementById(id).src = btn1;
}


function closeDiv(div) {
document.getElementById(div).style.display ="none";
}

function eraseDiv(div) {
document.getElementById(div).innerHTML ="";
}


function openCloseDiv(div) {
if (document.getElementById(div).style.display == 'none')
document.getElementById(div).style.display ="block";
else
document.getElementById(div).style.display ="none";
}


function submitDirectForm(formname)
{
if (formname == null)
var formname = 'submissionForm';

document.getElementById(formname).submit();
}


function sendLoginPopup (a, b, c, d){
var topStr = (screen.availHeight/2)-61;
var leftStr = (screen.availWidth/2)-150;
window.open("\"LogInPopUp.php?b_var2="+a+"&b_var3="+b+"&b_var4="+c+"&b_var5="+d,"logattempt","menubar=no,width=370,height=220,toolbar=no,top="+topStr+",left="+leftStr+"");
}



function submitFormValues(page,formname)
{
if (formname == null)
var formname = 'submissionForm';

var str = '';
var elem = document.getElementById(formname).elements;
for(var i = 0; i < elem.length; i++)
{
if (elem[i].type == 'radio' || elem[i].type == 'checkbox')
	{
	if (elem[i].checked)
	str += elem[i].name +"YJSP"+elem[i].value+"YJCM";
	}
	else
	{
	str += elem[i].name +"YJSP"+elem[i].value+"YJCM";
	}
if (elem[i].name == 'looking')
var looking = elem[i].value;
}

str = ued_encode(str);
var pars ="var1=form&var2="+str+"&page="+page+"&looking="+looking;

var url = REV_FOLDER +"getPage.php";

document.getElementById("pagecontent").innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>processing now...";
new Ajax.Updater('pagecontent', url,{evalScripts:true, method:'post',parameters:pars});
}


function sendLoginPopup (a, b, c, d){
var topStr = (screen.availHeight/2)-61;
var leftStr = (screen.availWidth/2)-150;
window.open("\"LogInPopUp.php?b_var2="+a+"&b_var3="+b+"&b_var4="+c+"&b_var5="+d,"logattempt","menubar=no,width=370,height=220,toolbar=no,top="+topStr+",left="+leftStr+"");
}


function embedVideo(clip,close)
{
var div ="clip"+clip;
var url = REV_FOLDER +"embedYouTube.php?clip="+clip+"&close="+close;
new Ajax.Updater(div, url,{evalScripts:true});
}

function popup(url, width, height)
{
	window.open(url.replace(/&amp;/g, '&'), '_popup', 'HEIGHT=' + height + ',resizable=yes,scrollbars=yes, WIDTH=' + width);
	return false;
}




function recordMediaVote(media_id,user_id) {
var sushis = document.getElementById('sushis').value;
var comments = document.getElementById('comments').value;
if (!sushis)
alert ("You must choose a rank.");
else
{
// alert (media_id +" ---->" + user_id +" ---->" + sushis +" ---->" + comments);
var pars ="page=recordvote&var1="+media_id+"&var2="+sushis+"&var3="+comments+"&var4="+user_id;
var url = REV_FOLDER +"recordMediaVote.php";
new Ajax.Updater('voteform', url,{evalScripts:true, method:'get',parameters:pars});
}

}


function setBackHeight() {
alert(document.body.clientHeight);
document.getElementById("backdiv").style.height=document.body.scrollHeight;
document.getElementById("backdiv").style.backgroundColor='red';
}


function changePage(page,page_num) {
var junban = document.getElementById('junban').value;
var showtype =  document.getElementById('showtype').value;
var pars ="page="+page+"&junban="+junban+"&p="+page_num+"&var3="+showtype;

var url = REV_FOLDER +"getPage.php";
document.getElementById("pagecontent").innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading page...";
new Ajax.Updater('pagecontent', url,{evalScripts:true, method:'post',parameters:pars});
}


function refreshMain(querystring) {
var pars = querystring;
var url = REV_FOLDER +"getPage.php";
document.getElementById("pagecontent").innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading page...";
new Ajax.Updater('pagecontent', url,{evalScripts:true, method:'post',parameters:pars});
}



function checkRadios(junban) {
if (junban)
var toSelect ="CHK"+junban;
else
var toSelect ="CHKnewest";

document.getElementById(toSelect).checked ="true";
}

function getPage(page,var1,var2,var3,var4,user_id,theuser,debug,looking) {
// alert(user_id);
var pars ="page="+page+"&var1="+var1+"&var2="+var2+"&var3="+var3+"&var4="+var4+"&theuser="+theuser+"&user_id="+user_id+"&debug="+debug+"&looking="+looking;
var url = REV_FOLDER +"getPage.php";
document.getElementById("pagecontent").innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading page...";
new Ajax.Updater('pagecontent', url,{evalScripts:true, method:'post',parameters:pars});
}


function postFormValues(page,submitted_form,div,url,followup_function)
{
if (div == null)
var div = 'pagecontent';

if (url == null)
var url = REV_FOLDER + 'getPage.php';

if (submitted_form == null)
var submitted_form = 'submissionForm';

var str = '';
var myform = document.getElementById(submitted_form);
for(var i = 0; i < myform.elements.length; i++)
{
if (myform.elements[i].type == 'radio' || myform.elements[i].type == 'checkbox')
	{
	if (myform.elements[i].checked)
	str += myform.elements[i].name +"=" + myform.elements[i].value +"&";
	}
	else
	{
	str += myform.elements[i].name +"=" + myform.elements[i].value +"&";
	}
}

var pars = str+"page="+page;
document.getElementById(div).innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";

document.getElementById(div).innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>processing now...";

if (followup_function)
onComplete:
new Ajax.Updater(div, url,{evalScripts:true, method:'post',parameters:pars,onComplete:eval(followup_function)});
else
new Ajax.Updater(div, url,{evalScripts:true, method:'post',parameters:pars});
}


function favoriteBox(u_id,media_id,action) {
// alert (media_id +" ---->" + id +" ---->" + action);
document.getElementById("streaming_video").innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";
document.getElementById("box_title").innerHTML ="&nbsp;Favorite";
var pars ="var1="+media_id+"&var4="+action+"&var3="+u_id+"&l="+u_id;
var url = "/YJ6/favoriteShowEditor.php";
new Ajax.Updater('streaming_video', url,{evalScripts:true, method:'post',parameters:pars});
}


function getGame(page,course,less,vers,var1,var2,var3,var4,user_id,theuser,debug,looking) {
var pars ="page="+page+"&var1="+var1+"&course="+course+"&less="+less+"&vers="+vers+"&var2="+var2+"&var3="+var3+"&var4="+var4+"&theuser="+theuser+"&user_id="+user_id;
var url = REV_FOLDER +"getGame.php";
document.getElementById("pagecontent").innerHTML ="<br><br><br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading game...";
new Ajax.Updater('pagecontent', url,{evalScripts:true, method:'post',parameters:pars});
}


function instantBuy(u_id,id,media_id,action) {
// alert (media_id +" ---->" + id +" ---->" + action);
document.getElementById("streaming_video").innerHTML ="<br><img src =/images/progress_bar.gif width=190 height=14 border=0><br>loading...";
var pars ="media_id="+media_id+"&action="+action+"&user_id="+u_id;
var url = "/YJ6/instantPurchase.php";
document.getElementById("box_title").innerHTML ="&nbsp;Buy Video";
new Ajax.Updater('streaming_video', url,{evalScripts:true, method:'post',parameters:pars});
} // end function instantBuy



function reloadVideoDetailsPage(media_id) {
parent.document.location ="\"/YJ6/videos/"+media_id;
} // end function reloadVideoDetailsPage



function updateMediaCart2009(u_id,id,media_id,action) {
// alert (media_id +" ---->" + id +" ---->" + action);
var pars ="media_id="+media_id+"&action="+action+"&user_id="+u_id;
var incart = parseInt(document.getElementById("mycart").innerHTML);

var url = REV_FOLDER +"updateMediaCart.php";
new Ajax.Updater(id, url,{evalScripts:true, method:'post',parameters:pars});

if (incart < 1)
var amount = 0;
else
var amount = 1;

if (action == 'ADD') {
document.getElementById("ADD"+media_id).src = '/images/cart-remove.png';
document.getElementById("ONCLICK"+media_id).onclick = function() {updateMediaCart2009(u_id,id,media_id,'REMOVE')};
document.getElementById("mycart").innerHTML = incart + 1;
} else {
document.getElementById("ADD"+media_id).src = '/images/cart-add.png';
document.getElementById("ONCLICK"+media_id).onclick = function() {updateMediaCart2009(u_id,id,media_id,'ADD')};
document.getElementById("mycart").innerHTML = incart - amount;
}
}



function reloadVideoDetailsPage(media_id) {
parent.document.location ="\"/YJ6/videos/"+media_id;
}



function updateMediaCart(u_id,id,media_id,action) {
// alert (media_id +" ---->" + id +" ---->" + action);
var pars ="media_id="+media_id+"&action="+action+"&user_id="+u_id;
updateCartNumbers(u_id,action);
var url = REV_FOLDER +"updateMediaCart.php";
new Ajax.Updater(id, url,{evalScripts:true, method:'post',parameters:pars});
}

function displayURL(url) {
new Ajax.Updater('pagecontent', url);
}

function calcHeight()
{
  //find the height of the internal page
  var the_height=document.getElementById('mainframe').contentWindow.document.body.scrollHeight;

  //change the height of the iframe
  document.getElementById('mainframe').height=the_height+100;
}

//ued_encode() will take an array as its argument and return the data encoded in UED format - as a string.
//http://www.openjs.com/scripts/data/ued_url_encoded_data/
function ued_encode(arr,current_index) {
	var query =""
	if(typeof current_index=='undefined') current_index = '';

	if(typeof(arr) == 'object') {
		var params = new Array();
		for(key in arr) {
			var data = arr[key];
			var key_value = key;
			if(current_index) {
				key_value = current_index+"["+key+"]"
			}

			if(typeof(data) == 'object') {
				if(data.length) { //List
					for(var i=0;i<data.length; i++) {
						params.push(key_value+"[]="+ued_encode(data[i],key_value)); //:RECURSION:
					}
				} else { //Associative array
					params.push(ued_encode(data,key_value)); //:RECURSION:
				}
			} else { //String or Number
				params.push(key_value+"="+encodeURIComponent(data));
			}
		}
		query = params.join("&");
	} else {
		query = encodeURIComponent(arr);
	}

	return query;
}

var qstart = 0;
var sqstart = 0;
var cstart = 0;

function moreQuestions(updown,reset) {
var skip_amount = 5;

var orderby = document.getElementById("orderby").value;
var orderstudent = document.getElementById("orderstudent").value;

if (reset == 1)
qstart = 0;
else
{
if (updown == 'down')
qstart = qstart - skip_amount;
else
qstart = qstart + skip_amount;
}

var div = 'questions';

var pars ="start="+qstart+"&orderby="+orderby+"&orderstudent="+orderstudent+"&ajax=1&remote_func=askTeacherQuestions";
var url = REV_FOLDER +"AJAXfunctions.php";

new Ajax.Updater(div, url,{method:'post',parameters:pars,onComplete: reloadMoreQuestions(qstart)});
}


function reloadMoreQuestions(qstart) {
var skip_amount = 5;

if (qstart > 0)
{
	if (qstart > skip_amount)
	document.getElementById("morequestions").innerHTML ="<a href = # onclick = \"moreQuestions('down',1);return false;\" style=color:#FFFFFF;>first"+skip_amount+"</a> | <a href = # onclick = \"moreQuestions('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreQuestions('up','');return false;\" style=color:#FFFFFF;>next</a>";
	else
	document.getElementById("morequestions").innerHTML ="<a href = # onclick = \"moreQuestions('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreQuestions('up',0);return false;\" style=color:#FFFFFF;>next</a>";
}
else
document.getElementById("morequestions").innerHTML ="<a href = # onclick = \"moreQuestions('up',0);return false;\" style=color:#FFFFFF;>next</a>";

}



function moreSquestions(updown,reset) {
var skip_amount = 5;

var orderby = document.getElementById("orderby").value;
var orderstudent = document.getElementById("orderstudent").value;

if (reset == 1)
sqstart = 0;
else
{
if (updown == 'down')
sqstart = sqstart - skip_amount;
else
sqstart = sqstart + skip_amount;
}

var div = 'squestions';

var pars ="start="+sqstart+"&orderby="+orderby+"&orderstudent="+orderstudent+"&type=student&ajax=1&remote_func=askTeacherQuestions";
var url = REV_FOLDER +"AJAXfunctions.php";
document.getElementById("moreSquestions").innerHTML ="<img src =/images/ajax_load.gif width=43 height=11 border=0><font color=#31659B> loading...</font>";

new Ajax.Updater(div, url,{method:'post',parameters:pars,onComplete: reloadMoreSquestions(sqstart)});
}

function reloadMoreSquestions(sqstart) {
var skip_amount = 5;

if (sqstart > 0)
{
	if (sqstart > skip_amount)
	document.getElementById("moreSquestions").innerHTML ="<a href = # onclick = \"moreSquestions('down',1);return false;\" style=color:#FFFFFF;>first"+skip_amount+"</a> | <a href = # onclick = \"moreSquestions('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreSquestions('up');return false;\" style=color:#FFFFFF;>next</a>";
	else
	document.getElementById("moreSquestions").innerHTML ="<a href = # onclick = \"moreSquestions('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreSquestions('up',0);return false;\" style=color:#FFFFFF;>next</a>";
}
else
document.getElementById("moreSquestions").innerHTML ="<a href = # onclick = \"moreSquestions('up',0);return false;\" style=color:#FFFFFF;>next</a>";

}


function moreComments(updown,reset) {
var skip_amount = 10;

if (reset == 1)
cstart = 0;

if (updown == 'down')
cstart = cstart - skip_amount;
else
cstart = cstart + skip_amount;

var display = skip_amount;
var pars ="start="+cstart+"&display="+display+"&ajax=1&remote_func=recentComments";
var url = REV_FOLDER +"AJAXfunctions.php";
document.getElementById("comments").innerHTML ="<img src =/images/ajax_load.gif width=43 height=11 border=0><font color=#31659B> loading...</font>";
new Ajax.Updater('comments', url,{method:'post',parameters:pars,onComplete: reloadMoreComments(cstart)});
}


function reloadMoreComments(cstart) {
var skip_amount = 5;
if (cstart > 0)
{
	if (cstart > skip_amount)
	document.getElementById("morecomments").innerHTML ="<a href = # onclick = \"moreComments('down',1);return false;\" style=color:#FFFFFF;>first </a> | <a href = # onclick = \"moreComments('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreComments('up',0);return false;\" style=color:#FFFFFF;>next</a>";
	else
	document.getElementById("morecomments").innerHTML ="<a href = # onclick = \"moreComments('down',0);return false;\" style=color:#FFFFFF;>back</a> | <a href = # onclick = \"moreComments('up',0);return false;\" style=color:#FFFFFF;>next</a>";
}
else
document.getElementById("morecomments").innerHTML ="<a href = # onclick = \"moreComments('up',0);return false;\" style=color:#FFFFFF;>next</a>";
}


function goLite(BTN)
{
   document.getElementById(BTN).style.backgroundColor ="#D9D9D9";
}

function goDim(BTN)
{
   document.getElementById(BTN).style.backgroundColor ="#FFFFCC";
}

function resizable(unique_id) {
handleRight = document.getElementById("handleRight_" + unique_id);
handleCorner = document.getElementById("handleCorner_" + unique_id);
handleBottom = document.getElementById("handleBottom_" + unique_id);

new dragObject_DD(handleRight, unique_id, null, new Position_DD(15, 0),
    new Position_DD(500, 0), null, RightMove_DD, null, false);
new dragObject_DD(handleBottom, unique_id, null, new Position_DD(0, 15),
    new Position_DD(0, 500), null, BottomMove_DD, null, false);
new dragObject_DD(handleCorner, unique_id, null, new Position_DD(15, 15),
    new Position_DD(500, 500), null, CornerMove_DD, null, false);
}

function Position_DD(x, y)
{
  this.X = x;
  this.Y = y;
  
  this.Add = function(val)
  {
    var newPos = new Position_DD(this.X, this.Y);
    if(val != null)
    {
      if(!isNaN(val.X))
        newPos.X += val.X;
      if(!isNaN(val.Y))
        newPos.Y += val.Y
    }
    return newPos;
  }
  
  this.Subtract = function(val)
  {
    var newPos = new Position_DD(this.X, this.Y);
    if(val != null)
    {
      if(!isNaN(val.X))
        newPos.X -= val.X;
      if(!isNaN(val.Y))
        newPos.Y -= val.Y
    }
    return newPos;
  }
  
  this.Min = function(val)
  {
    var newPos = new Position_DD(this.X, this.Y)
    if(val == null)
      return newPos;
    
    if(!isNaN(val.X) && this.X > val.X)
      newPos.X = val.X;
    if(!isNaN(val.Y) && this.Y > val.Y)
      newPos.Y = val.Y;
    
    return newPos;  
  }
  
  this.Max = function(val)
  {
    var newPos = new Position_DD(this.X, this.Y)
    if(val == null)
      return newPos;
    
    if(!isNaN(val.X) && this.X < val.X)
      newPos.X = val.X;
    if(!isNaN(val.Y) && this.Y < val.Y)
      newPos.Y = val.Y;
    
    return newPos;  
  }  
  
  this.Bound = function(lower, upper)
  {
    var newPos = this.Max(lower);
    return newPos.Min(upper);
  }
  
  this.Check = function()
  {
    var newPos = new Position_DD(this.X, this.Y);
    if(isNaN(newPos.X))
      newPos.X = 0;
    if(isNaN(newPos.Y))
      newPos.Y = 0;
    return newPos;
  }
  
  this.Apply = function(element)
  {
    if(typeof(element) =="string")
      element = document.getElementById(element);
    if(element == null)
      return;
    if(!isNaN(this.X))
      element.style.left = this.X + 'px';
    if(!isNaN(this.Y))
      element.style.top = this.Y + 'px';  
  }
}

function hookEvent_DD(element, eventName, callback)
{
  if(typeof(element) =="string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent_DD(element, eventName, callback)
{
  if(typeof(element) =="string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
    element.removeEventListener(eventName, callback, false);
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}

function cancelEvent_DD(e)
{
  e = e ? e : window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}

function getMousePos_DD(eventObj)
{
  eventObj = eventObj ? eventObj : window.event;
  var pos;
  if(isNaN(eventObj.layerX))
    pos = new Position_DD(eventObj.offsetX, eventObj.offsetY);
  else
    pos = new Position_DD(eventObj.layerX, eventObj.layerY);
  return correctOffset(pos, pointerOffset, true);
}

function getEventTarget_DD(e)
{
  e = e ? e : window.event;
  return e.target ? e.target : e.srcElement;
}

function absoluteCursorPostion_DD(eventObj)
{
  eventObj = eventObj ? eventObj : window.event;
  
  if(isNaN(window.scrollX))
    return new Position_DD(eventObj.clientX + document.documentElement.scrollLeft + document.body.scrollLeft, 
      eventObj.clientY + document.documentElement.scrollTop + document.body.scrollTop);
  else
    return new Position_DD(eventObj.clientX + window.scrollX, eventObj.clientY + window.scrollY);
}

function dragObject_DD(element, unique_id, attachElement, lowerBound, upperBound, startCallback, moveCallback, endCallback, attachLater)
{
  if(typeof(element) =="string")
    element = document.getElementById(element);
  if(element == null)
      return;
  
  if(lowerBound != null && upperBound != null)
  {
    var temp = lowerBound.Min(upperBound);
    upperBound = lowerBound.Max(upperBound);
    lowerBound = temp;
  }

  var cursorStartPos = null;
  var elementStartPos = null;
  var dragging = false;
  var listening = false;
  var disposed = false;
  
  function dragStart_DD(eventObj)
  { 
    if(dragging || !listening || disposed) return;
    dragging = true;
    
    if(startCallback != null)
      startCallback(eventObj, element);
    
    cursorStartPos = absoluteCursorPostion_DD(eventObj);
    
    elementStartPos = new Position_DD(parseInt(element.style.left), parseInt(element.style.top));
   
    elementStartPos = elementStartPos.Check();
    
    hookEvent_DD(document,"mousemove", dragGo_DD);
    hookEvent_DD(document,"mouseup", dragStopHook_DD);
    
    return cancelEvent_DD(eventObj);
  }
  
  function dragGo_DD(eventObj)
  {
    if(!dragging || disposed) return;
    
    var newPos = absoluteCursorPostion_DD(eventObj);
    newPos = newPos.Add(elementStartPos).Subtract(cursorStartPos);
    newPos = newPos.Bound(lowerBound, upperBound)
    newPos.Apply(element);
    if(moveCallback != null)
      moveCallback(newPos, element, unique_id);
        
    return cancelEvent_DD(eventObj); 
  }
  
  function dragStopHook_DD(eventObj)
  {
    dragStop_DD();
    return cancelEvent_DD(eventObj);
  }
  
  function dragStop_DD()
  {
    if(!dragging || disposed) return;
    unhookEvent_DD(document,"mousemove", dragGo_DD);
    unhookEvent_DD(document,"mouseup", dragStopHook_DD);
    cursorStartPos = null;
    elementStartPos = null;
    if(endCallback != null)
      endCallback(element);
    dragging = false;
  }
  
  this.Dispose = function()
  {
    if(disposed) return;
    this.StopListening(true);
    element = null;
    attachElement = null
    lowerBound = null;
    upperBound = null;
    startCallback = null;
    moveCallback = null
    endCallback = null;
    disposed = true;
  }
  
  this.StartListening = function()
  {
    if(listening || disposed) return;
    listening = true;
    hookEvent_DD(attachElement,"mousedown", dragStart_DD);
  }
  
  this.StopListening = function(stopCurrentDragging)
  {
    if(!listening || disposed) return;
    unhookEvent_DD(attachElement,"mousedown", dragStart_DD);
    listening = false;
    
    if(stopCurrentDragging && dragging)
      dragStop_DD();
  }
  
  this.IsDragging = function(){ return dragging; }
  this.IsListening = function() { return listening; }
  this.IsDisposed = function() { return disposed; }
  
  if(typeof(attachElement) =="string")
    attachElement = document.getElementById(attachElement);
  if(attachElement == null)
    attachElement = element;
    
  if(!attachLater)
    this.StartListening();
}


function BottomMove_DD(newPos, element, unique_id)
{
  DoHeight_DD(newPos.Y, element, unique_id);
}

function RightMove_DD(newPos, element, unique_id)
{
  DoWidth_DD(newPos.X, element, unique_id);
}

function CornerMove_DD(newPos, element, unique_id)
{
  DoHeight_DD(newPos.Y, element, unique_id);
  DoWidth_DD(newPos.X, element, unique_id);
}

function DoHeight_DD(y, element, unique_id)
{
  document.getElementById("textDiv_"+unique_id).style.height = (y + 5) + 'px';

  if(element != handleCorner)
    document.getElementById("handleCorner_"+unique_id).style.top = y + 'px';

  document.getElementById("handleRight_"+unique_id).style.height = y + 'px';

  if(element != handleBottom)
    document.getElementById("handleBottom_"+unique_id).style.top = y + 'px';
 
  document.getElementById("value_"+unique_id).style.height = (y - 5) + 'px';
}

function DoWidth_DD(x, element, unique_id)
{

  document.getElementById("textDiv_"+unique_id).style.width =  (x + 5) + 'px';

  if(element != handleCorner)
    document.getElementById("handleCorner_"+unique_id).style.left = x + 'px';

  if(element != handleRight)
    document.getElementById("handleRight_"+unique_id).style.left = x + 'px';

  document.getElementById("handleBottom_"+unique_id).style.width = x + 'px';

  document.getElementById("value_"+unique_id).style.width = (x - 5) + 'px';
}


function getElement(aID)  {
return (document.getElementById) ? document.getElementById(aID) : document.all[aID];
}

function getIFrameDocument(aID) { 
var rv = null; 
var frame=getElement(aID); 
// if contentDocument exists, W3C compliant (e.g. Mozilla) 

if (frame.contentDocument)
rv = frame.contentDocument;
else // bad Internet Explorer
rv = document.frames[aID].document;
return rv;
}

function adjustMyFrameHeight() {
var frame = getElement("myFrame");
var frameDoc = getIFrameDocument("myFrame");
frame.height = frameDoc.body.offsetHeight;
}



