
//*******************************************************************************
//*		COMMON JAVASCRIPT METHODS												*
//*		Version: 2005-02-28														*
//*******************************************************************************
//*		Changelog:																*
//*		2005-02-28: IKS Created													*
//*		2005-08-10:	IKS - Removed prototype methods								*
//*						- Added ReloadLogin										*
//*******************************************************************************

/*function OnKeyPress( event, handler )
{
	if ( event == null )
		event = window.event;

	if ( event.keyCode == 9 )
	{
		// cancel on tab
		return true;
	}
		
	handler();
}*/

function OnKeyPress( event )
{
	
}

function ConfirmCancel( confirmText, cancelUrl )
{
	if ( !confirm( confirmText ) )
		return false;
		
	if ( cancelUrl != null )
		location.replace( cancelUrl );
	
	return true;
}

function ReloadLogin( url, nameParam1, idParam1, nameParam2, idParam2, nameParam3, idParam3 )
{
	url += '?' + nameParam1 + '=' + document.getElementById(idParam1).value;
	url += '&' + nameParam2 + '=' + document.getElementById(idParam2).value;
	url += '&' + nameParam3 + '=' + document.getElementById(idParam3).value;
	/*if ( location.href.indexOf( "https" ) == 0 )
		url += '&ssloverride=true';*/
	location.replace(url);
}

function AddPageToBrowserFavorites( url, title )
{
	if (window.sidebar)
	{
		window.sidebar.addPanel(title, url, "");
	}
	else if( window.external )
	{
		window.external.AddFavorite( url, title);
	}
}

function ToggleInfoBox( boxId, textId, showText, hideText )
{
	var box = document.getElementById( boxId );
	if ( box == null )
		return;
	
	var bIsCollapsed = box.className == "hidden";
	
	if ( bIsCollapsed )
		box.className = "";	// show
	else
		box.className = "hidden";	// hide
	
	if ( showText == null || hideText == null )
		return;

	var text = document.getElementById( textId );
	if ( text == null )
		return;
	
	if ( bIsCollapsed )
		text.innerHTML = hideText;
	else
		text.innerHTML = showText;
}

var _POPUP_FEATURES = 'location=0,statusbar=0,menubar=0,width=400,height=300';
function raw_popup(url, target, features) 
{
	if (features == null || features == '') 
	{
		features = _POPUP_FEATURES;
	}
	if (target == null || target == '') 
	{
		target = '_blank';
	}
	var theWindow = window.open(url, target, features);
	theWindow.focus();
	return theWindow;
}

function OpenPopup(src, features, url) 
{
	var href = url;
	if ( href == null || href == '' )
		href = src.getAttribute('href');
	return raw_popup(href, src.getAttribute('target') || '_blank', features);
}

function LoadActiveXEditor( clsid, width, height, name, tabindex, bWrapNewlineIntoBr )
{
	var str;
	str = '<object width="' + width + '" height="' + height + '" classid="' + clsid + '" name="' + name + '" ' + tabindex + '">';
	str += '<param name="ShowBorders" value="true"/>';
	if( bWrapNewlineIntoBr )
		str += '<param name="UseDivOnCarriageReturn" value="true"/>';
	else
		str += '<param name="UseDivOnCarriageReturn" value="false"/>';
	str += '</object>';
	str += '<object id=\"ObjTableInfo\" classid=\"clsid:47B0DFC7-B7A3-11D1-ADC5-006008A5848C\" tabindex=\"-1\"></object>';
	document.write( str );
}




//validExtensions is comma separated string. ex. "doc,txt,html"
function IsValidExtension( fileName, validExtensions )
{
	var extension = GetFileExtension( fileName );
	var arrExtensions = validExtensions.split( ',' );
	for( var i=0;i < arrExtensions.length; i++ )
	{
		s = arrExtensions[i];
		if( s.indexOf( extension ) >= 0)
			return true;
	}
	return false;
}

function GetFileExtension( fileName )
{
	var position = fileName.lastIndexOf( "." );
	return fileName.substring( position+1, fileName.length ); 	
}

function GetChat( nickName, server, port  )
{
	var str;
	str = '<OBJECT classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" width=\"725\" height=\"403\" align=\"baseline\" codebase=\"http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0\">';
	str += '<PARAM NAME=\"type\" VALUE=\"application/x-java-applet;version=1.3\">';
	str += '<PARAM NAME=\"scriptable\" VALUE=\"false\">';
	str += '<param name=\"Archive\" value=\"XChat2.jar\">';
	str += '<param name=\"CODE\" value=\"XChat2.XChat2.class\">';
	str += '<param name=\"Nickname\" value=\"' + nickName  + '\">';
	str += '<param name=\"Channel\" value=\"#Lobby\">';
	str += '<param name=\"Server\" value=\"' + server + '\">';
	str += '<param name=\"Codebase\" value=\"http://' + server + '/chat/\" >';
	str += '<param name=\"Port\" value=\"' + port + '\">';
	str += '<param name=\"Password\" value=\"\">';
	str += '<param name=\"Password\" value=\"PASS\">';
	str += '<param name=\"ColorRGB\" value=\"247,146,74\">';
			//NETSCAPE
	str += '<COMMENT>';
	str += '<EMBED ';
	str += 'type=\"application/x-java-applet;version=1.3\"';
	str += 'WIDTH = \"725\" ';
	str += 'HEIGHT = \"403\" ';
	str += 'ALIGN = \"baseline\" ';
	str += 'java_Archive = \"XChat2.jar\" ';
	str += 'java_CODE = \"XChat2.XChat2.class\" ';
	str += 'java_CODEBASE = \"http://' + server + '/chat/\"';
	str += 'Nickname = \"' + nickName  +'\" ';
	str += 'Channel = \"#Lobby\" ';
	str += 'Server = \"' + server + '\"';
	str += 'Port = \"' + port + '\" ';
	str += 'Password = \"\" ';
	str += 'Password = \"PASS\" ';
	str += 'ColorRGB = \"247,146,74\" ';
	str += 'scriptable=false pluginspage=\"http://java.sun.com/products/plugin/1.3/plugin-install.html\">';
	str += '<NOEMBED></COMMENT>';
	str += '</NOEMBED></EMBED></OBJECT>';	
	document.write( str );

}

function GetConferenceNew( newWindow, width, height, ServerIP, ServerPort, RoomName, RoomPwd, UserName, RealName, EnablePersonalPictureURL, PersonalPictureURL, PersonalColor, Supervisor, EnableWritingBoard, EnableDrawingBoard, CanEditWritingBoard, PersonalPictureHeight, MaxWritingBoardPages, Signature )
{
	var str;
	str  = '<object classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" codebase=\"http://java.sun.com/update/1.4.2/jinstall-1_4-windows-i586.cab#Version=1,4,0,0\" width=\"' + width + '\%" height=\"' + height + '%\" id=\"Talx\" name=\"Talx\">';
	str += '<param name=\"code\" value=\"Talx\">';
	str += '<param name=\"archive\" value=\"talx.jar\">';
	str += '<param name=\"type\" value=\"application/x-java-applet;version=1.4\">';
	str += '<param name=\"RoomName\" value=\"' + RoomName + '">';
	str += '<param name=\"RoomPwd\" value=\"' + RoomPwd + '\">';
	str += '<param name=\"ServerPort\" value=\"' + ServerPort + '\">';
	str += '<param name=\"ServerIP\" value=\"' + ServerIP + '\">';
	str += '<param name=\"RealName\" value=\"' + RealName + '\">';
	str += '<param name=\"UserName\" value=\"' + UserName + '\">';
	str += '<param name=\"PersonalPictureURL\" value=\"' + PersonalPictureURL + '\">';
	str += '<param name=\"EnablePersonalPictureURL\" value=\"' + EnablePersonalPictureURL + '\">';
	str += '<param name=\"PersonalPictureHeight\" value=\"' + PersonalPictureHeight + '\">';
	str += '<param name=\"PersonalColor\" value=\"' + PersonalColor + '\">';
	str += '<param name=\"Supervisor\" value=\"' + Supervisor + '\">';
	str += '<param name=\"EnableWritingBoard\" value=\"' + EnableWritingBoard + '\">';
	str += '<param name=\"EnableDrawingBoard\" value=\"' + EnableDrawingBoard + '\">';
	str += '<param name=\"CanEditWritingBoard\" value=\"' + CanEditWritingBoard + '\">';
	str += '<param name=\"MaxWritingBoardPages\" value=\"' + MaxWritingBoardPages + '\">';
	str += '<param name=\"Signature\" value=\"' + Signature + '\">';
	str += '<comment>';
	str += '<applet pluginspage=\"http://java.sun.com/products/plugin/index.html#download\" ';
	str += 'id =\"Talx2\" ';
	str += 'name =\"Talx2\" ';
	str += 'width =\"' + width + '%\" ';
	str += 'height =\"' + height + '%\" ';
	str += 'code =\" Talx\" ';
	str += 'archive =\" talx.jar\" ';
	str += 'type =\" application/x-java-applet;version=1.4\" ';
	str += 'RoomName =\"' + RoomName + '\" ';
	str += 'RoomPwd =\"' + RoomPwd + '\" ';
	str += 'ServerPort =\"' + ServerPort + '\" ';
	str += 'ServerIP =\"' + ServerIP + '\" ';
	str += 'RealName =\"' + RealName + '\" ';
	str += 'UserName =\"' + UserName + '\" ';
	str += 'PersonalPictureURL =\"' + PersonalPictureURL + '\" ';
	str += 'EnablePersonalPictureURL =\"' + EnablePersonalPictureURL + '\" ';
	str += 'PersonalPictureHeight =\"' + PersonalPictureHeight + '\" ';
	str += 'PersonalColor =\"' + PersonalColor + '\" ';
	str += 'Supervisor =\"' + Supervisor + '\" ';
	str += 'EnableWritingBoard =\"' + EnableWritingBoard + '\" ';
	str += 'EnableDrawingBoard =\"' + EnableDrawingBoard + '\" ';
	str += 'CanEditWritingBoard =\"' + CanEditWritingBoard + '\" ';
	str += 'MaxWritingBoardPages =\"' + MaxWritingBoardPages + '\" ';
	str += 'Signature =\"' + Signature + '\" ';
	str += '></applet>';
	str += '</comment>';
	str += '</object>';
	document.write( str );
	//resize( newWindow );

}


function resize( newWindow )
{
	if (navigator.appName.indexOf("Microsoft") != -1)
	{
		return;
	}
	var w_newWidth,w_newHeight;
	var w_maxWidth=1600, w_maxHeight=1200;

	var netscapeScrollWidth=0;
	w_newWidth  = window.innerWidth-netscapeScrollWidth;
	w_newHeight = window.innerHeight-netscapeScrollWidth;

	if (w_newWidth > w_maxWidth)
		w_newWidth = w_maxWidth;
	if (w_newHeight > w_maxHeight)
		w_newHeight = w_maxHeight;

	if( newWindow )
		w_newHeight =  w_newHeight * 0.90;	
	else
		w_newHeight =  w_newHeight * 0.70;	
	var appletDiv = document.getElementById('Talx');
	if (appletDiv != null) 
		appletDiv.style.height = w_newHeight + "px";

	window.scroll(0,0);
}

function GetPlayer( file, pluginText )
{
	var str;
	str = "<object classid=\"CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\" id=\"mediaplayer1\">";
	str += "<param name=\"Filename\" value=\"" + file + "\">";
	str += "<param name=\"AutoStart\" value=\"True\">";
	str += "<param name=\"ShowControls\" value=\"True\">";
	str += "<param name=\"ShowStatusBar\" value=\"False\">";
	str += "<param name=\"ShowDisplay\" value=\"False\">";
	str += "<param name=\"AutoRewind\" value=\"True\">";
	str += "<embed type=\"application/x-mplayer2\" ";
	str += "pluginspage=\"http://microsoft.com/windows/mediaplayer/en/download/\" "; 
	str += "src=\"" + file + "\" ";
	// filename=\"" + file + "\" ";
	str += "autostart=\"true\" showcontrols=\"true\" ";
	str += "id=\"mediaplayer1\" ";
	str += "showstatusbar=\"false\" showdisplay=\"true\" autorewind=\"true\">";
	str += "<noembed>" + pluginText + "</noembed>";
	str += "</embed>";
	str += "</object>";
	document.write( str );
}

function LoadFileUploader( itemUpload, alternateUrl, limit, language )
{
	var str;
	str = "<applet code=\"com/infomentum/appletfile/FileUpload.class\" archive=\"FileUpload.jar\" ";
	str += "codebase=\"/AppletFile/classesV4\" width=\"80%\" height=\"100\" name=\"" + itemUpload + "\" mayscript VIEWASTEXT id=applet1> ";
	str += "<param name=\"cabbase\" value=\"/AppletFile/classesV4/FileUpload.cab\"> ";
	str += "<param name=\"alternateUrl\" value=\"" + alternateUrl + "\">";
	str += "<param name=\"selectFolders\" VALUE=\"true\">";
	str += "<param name=\"AutoZip\" VALUE=\"true\">";
	str += "<param name=\"errorLimit\" value=\"" + limit + "\">";
	str += "<param name=\"language\" value=\"" + language + "\">";
	str += "<param name=\"noConfirm\" value=\"true\">";
	str += "<param name=\"filter1\" value=\"All files (*.*)\">";
	str += "<param name=\"filter2\" value=\"Images (*.gif,*.jpg,*.jpeg,*.png)\">";
	str += "<param name=\"directory\" value=\"\">";
	str += "</applet>";
	document.write( str );
}

function TrimString(s)
{
    s = s.replace(/^\s+/g, "");      // strip leading
    return s.replace(/\s+$/g, "");   // strip trailing
}

function IsPosInt(sText)
{
    if ( sText == null )
        return false;
    var validChars = "0123456789";
    for (i = 0; i < sText.length; i++)
    {
        if (validChars.indexOf(sText.charAt(i)) == -1)
        {
           return false;
        }
    }
    return sText.length > 0;
}

function GetPosIntPart(aDate, aFormat, part)
{
    var i;
    for (i = 0; i < Math.min(aDate.length, aFormat.length); i++)
    {
        if ( aFormat[i].charAt(0).toLowerCase() == part && IsPosInt(aDate[i]) )
            return parseInt(aDate[i], 10);
    }
    return 0;
}

function IsDateIsoFormat(sDate)
{
    if (sDate == null)
        return false;
    sDate = TrimString(sDate);
    return ( sDate.length == 10 && IsPosInt(sDate.substr(0,4)) && sDate.charAt(4) == '-' && IsPosInt(sDate.substr(5,2)) && sDate.charAt(7) == '-' && IsPosInt(sDate.substr(8,2)) );
}

function ParseDate(sDate, sFormat)
{
    sDate = TrimString(sDate);
    // make sure separators are the same
    while (sDate.search("  ") != -1)
        sDate = sDate.replace("  ", " ");
    sDate = sDate.replace(/[^0-9]/g, "-");          // need to replace -- with -  (perhaps there are spaces)
    sFormat = sFormat.replace(/[^yYmMdD]/g, "-");   // make sure separators are '-'
    var aDate = sDate.split("-");
    var aFormat = sFormat.split("-");
    var aYMD = new Array(Math.min(3, aDate.length));
    aYMD[0] = GetPosIntPart(aDate, aFormat, 'y');
    aYMD[1] = GetPosIntPart(aDate, aFormat, 'm');
    aYMD[2] = GetPosIntPart(aDate, aFormat, 'd');
		    
    return aYMD;
}

function IsValidDate(sDate, sFormat)
{  
    if (IsDateIsoFormat(sDate))
        sFormat = "yyyy-MM-dd";
    var aYMD = ParseDate(sDate, sFormat);
    if (aYMD.length != 3)
        return false;
    var year = aYMD[0];
    var month = aYMD[1];
    var day = aYMD[2];
    if ( ((month > 12) || (month < 1)) || ((day > 31) || (day < 1)) || ((year < 1900) || (year > 2078)) )
    {
       return false;
    }
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30)
    {
       return false;
    }
    if (month == 2)
    {
       if ((year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) && day > 29)
       {
          return false;
       }
       else if ((year % 4 != 0 && (year % 100 == 0 || year % 400 != 0) ) && day > 28)
       {
          return false;
       }
    }
    return true;
}

function ParseTime(sTime)
{
    sTime = sTime.replace(/\s/g, "");
    var s = "";
    var sAmPm = "";
    var iPos = 0;
    var aHMS = new Array(3);
    aHMS[0] = aHMS[1] = -80;
    aHMS[2] = 0;
    for (var i = 0; i < sTime.length; i++)
    {
	    if (IsPosInt(sTime.substr(i,1)))
	    {
	        s += sTime.charAt(i);
	    }
	    if ( ((sTime.length-1) == i) || !IsPosInt(sTime.substr(i,1)) )
	    {
	        if (s.length > 0 && iPos <= 3)
	        {
				aHMS[iPos] = parseInt(s, 10);
			}
	        s = "";
	        iPos++;
	    }
    }
    sTime = sTime.toLowerCase();
    if (sTime.search("a") > 0 && aHMS[0] == 12)
        aHMS[0] -= 12;
    else if (sTime.search("p") > 0 && aHMS[0] != 12)
        aHMS[0] += 12;
    sTime = sTime.replace("am", "");
    sTime = sTime.replace("pm", "");
    sTime = sTime.replace("a", "");
    sTime = sTime.replace("p", "");
    sTime = sTime.replace(/[.:0-9]/g, "");
    if ( sTime.length != 0 )
        aHMS[0] = -80;          // sTime contains invalid characters, make return value invalid

    return aHMS;
}

function IsValidTime(sTime)
{
    var aHMS = ParseTime(sTime);
    var hour = aHMS[0];
    var min = aHMS[1];
    var sec = aHMS[2];
    return (hour >= 0 && hour <= 23 && min >= 0 && min <= 59 && sec >= 0 && sec <= 59);
}

function OpenHelp( url, frame1, frame2 )
{
	var frm = top;
	if ( frame1 && frame1 != "")
		frm = frm.frames[frame1];
	if ( frame2 && frame2 != "" )
		frm = frm.frames[frame2];
		
	var width, height;
	width = 800;
	height = 600;
	if ( window.width > width )
		width = window.width;
	if ( window.height > height )
		height = window.height;
	
	window.open( url + frm.location.pathname, "", "height=" + height + ",width=" + width + ",location=yes,toolbar=yes,scrollbars=yes,status=yes,menubar=yes,resizable=yes" );
	return false;
}
function OpenHelp2( url )
{
	var width, height;
	width = 800;
	height = 600;
	if ( window.outerWidth && window.outerWidth > width )
		width = window.outerWidth;
	if ( window.outerHeight && window.outerHeight > height )
		height = window.outerHeight;
	
	window.open( url, "", "height=" + height + ",width=" + width + ",location=yes,toolbar=yes,scrollbars=yes,status=yes,menubar=yes,resizable=yes" );
	return false;
}


