var dbHTTP;


function getById(aID)
{
	if (document.getElementById)
	{
		//alert("1");
		//var x=document.getElementById(aID);
		var x;
  		//if (document.getElementById) 
		//{
			x = document.getElementById(aID);
		//}
		//else
		//{
		//	x = document.all[aID]);
		//}

		//alert("2");
		if (x != null)
		{
			//alert("3");
			return x ;
			//return x[aName] ;
		}
		else
		{
			//alert("4");
			alert("getElementById returned null. Try a different browser.");
			return null ;
		}
	}
	else
	{
		alert("Unable to call getElementById due to browser type or settings. Try a different browser.");
	}
}

function getByName(aName)
{
	if (document.getElementById)
	{
		//alert("1");
		var x=document.getElementsByName(aName);
		//alert("2");
		//alert("len=" + x.length);
		//alert("value=" + x[aName].value) ;
		if (x != null)
		{
			//alert("3");
			return x[aName] ;
		}
		else
		{
			//alert("4");
			return null ;
		}
	}
	else
	{
		alert("Unable to call getElementById due to browser type or settings. Try a different browser.");
	}
}

function goValidateField(pDisplayName, pId, pMin, pMax, pMustContain, pCannotContain)
{
	var elem = getById(pId) ;
	if (elem)
	{
		var tstr = "param Display Name: " + pDisplayName + "\n" ; 
		tstr = tstr + "param Element ID: " + pId + "\n" ; 
		tstr = tstr + "param pMin: " + pMin + "\n" ; 
		tstr = tstr + "param pMax: " + pMax + "\n" ; 
		tstr = tstr + "param pMustContain: " + pMustContain + "\n" ; 
		tstr = tstr + "param pCannotContain: " + pCannotContain + "\n" ; 
		tstr = tstr + "elem.value: " + elem.value + "\n" ; 
		tstr = tstr + "elem.name: " + elem.name + "\n" ; 

		//alert(tstr) ;

		if (elem.value == "" && pMin > 0)
		{
			alert(pDisplayName + " is required.\n" + pDisplayName + " current value=" + elem.value) ;
			//document.RegisterForm.EmailTextBox.select();
			//document.RegisterForm.EmailTextBox.focus();
			elem.select();
			elem.focus();
			return false;
		}
	
		str=elem.value ;
		//alert("value="+str);
		//alert("minsize="+minsize);
		//alert("maxsize="+maxsize);
		//alert("truesize="+str.length);
		if (pMustContain.length > 0)
		{
			for (i = 0; i < pMustContain.length; i++)
			{
				if (str.lastIndexOf(pMustContain.substr(i,1)) == -1)
				{
					alert("The "+pDisplayName+" entered does not contain the " + pMustContain.substr(i,1) + " symbol.") ;
					//alert("len:" + pMustContain.length + " symbol: " + pMustContain.substr(i,1)) ;
					elem.select();
					elem.focus();
					return false ;
				}
			}
		}
	
		if (pCannotContain.length > 0)
		{
			for (i = 0; i < pCannotContain.length; i++)
				//if (str.lastIndexOf(pCannotContain[i]) != -1)
				if (str.lastIndexOf(pCannotContain.substr(i,1)) != -1)
				{
					alert("The "+pDisplayName+" entered can NOT contain: " + pCannotContain) ;
					elem.select();
					elem.focus();
					return false ;
				}
		}

		//if (pMin > 0 && pMax > 0)
		if (pMax > 0)
		{
			if (str.length < pMin || str.length > pMax)
			{
				alert("The "+pDisplayName+" entered must be between "+pMin+" to "+pMax+" digits or characters.") ;
				elem.select();
				elem.focus();
				return false ;
			}
		}

		return true ;
	}
	else
	{
		alert("Unable to access field element: " + pId) ;
		return false ;
	}
}





function CommentCheck()
{
	var origbutval = "" ;
	var buttonname = "CommentButton" ;
	var textareaname = "CommentTextArea";

	//retain button value and disable button
	getById(buttonname).disabled = true;
	origbutval = getById(buttonname).value ;
	getById(buttonname).value = "Please wait...";

	if (getById(textareaname).value == "")
	{
		alert("No comment to post. Please type a comment.") ;
		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;
		return false ;
	}


	//PHASE 1 CHECK FOR basic HTML TAGS on the client side
	//Phase 2 parsing and staff alarm via email happens on the server side (sorry can't give away the alg here)
	var foundhtml = false ;
	var foundtag  = -1;
	var htmltags  = new Array("<abbr", "<acronym", "<address", "<applet",
								"<basefont",
								"<blockquote",
								"<body",
								"<button",
								"<center",
								"<code",
								"<div",
								"<embed",
								"<font",
								"<form",
								"<frame",
								"<head",
								"<html",
								"<hr",
								"<iframe",
								"<input",
								"<img",
								"<link",
								"<map",
								"<meta",
								"<noframes",
								"<noscript",
								"<object",
								"<option",
								"<param",
								"<script",
								"<select",
								"<style",
								"<table",
								"<tbody",
								"<textarea",
								"<title",
								"<!doctype>",
								"<br>",
								"style=",
								"src=",
								"href=",
								"</body",
								"</b>",
								"</button",
								"</center",
								"</code",
								"</div",
								"</embed",
								"</font",
								"</form",
								"</frame",
								"</head",
								"</html",
								"</iframe",
								"</input",
								"</img",
								"</link",
								"</map",
								"</meta",
								"</noframes",
								"</noscript",
								"</object",
								"</option",
								"</p>",
								"</param",
								"</script",
								"</select",
								"</style",
								"</table",
								"</tbody",
								"</textarea",
								"</title",
								"<!--")

	var tempstr = "" ;
	tempstr = getById(textareaname).value ;
	tempstr = tempstr.toLowerCase() ;

	var arraylen = htmltags.length ;
	//alert("htmltags.length=" + htmltags.length) ;
	for(iloop = 0; iloop < arraylen; iloop++)
	{
		var tempfoundpos = tempstr.lastIndexOf(htmltags[iloop]) ;
		//alert("tempfoundpos=" + tempfoundpos) ;
		if (tempfoundpos >= 0)
		{
			foundtag=iloop;
			foundhtml=true;
		}
	}


	if (foundhtml == true)
	{
		if (foundtag > -1) alert("Text in your message appears to contain HTML code. Please remove or re-arrange any punctuation or special text your message contains.\n\nPlease remove, re-format or re-arrange [" + htmltags[foundtag] + "]. You cannot post HTML tags or script of any kind.") ;

		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;
		//alert("returning false!!!");
		return false ;
	}

	return ;
}




function LogOnCheck()
{
	var origbutval = "" ;
	var buttonname = "LogOnButton" ;
	var emailtextbox = "EmailTextBox" ;
	var passwordtextbox = "PasswordTextBox" ;

	//retain button value and disable button
	getById(buttonname).disabled = true;
	origbutval = getById(buttonname).value ;
	getById(buttonname).value = "Please wait...";


	//email
	if (getById(emailtextbox).value == "")
	{
		alert("Email address is required.") ;
		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;

		getById(emailtextbox).select();
		getById(emailtextbox).focus();
		return false;
	}

	//pwd
	if (getById(passwordtextbox).value == "")
	{
		alert("Password is required.") ;
		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;

		getById(passwordtextbox).select();
		getById(passwordtextbox).focus();
		return false;
	}

	return true ;
}





function RegisterFormCheck(editmode)
{
	var origbutval ;

	//alert("nav: " + navigator.appVersion) ;

	var subbut = getById("SubmitButton") ;
	if (subbut)
	{
		origbutval = subbut.value ;
		subbut.disabled = true;
		subbut.value = "Please Wait...";
	}
	
	//alert("edit mode="+editmode);
	//return false ;

	//SCREENNAME, USERNAME
	if (editmode == false)
	{
		if(goValidateField("Screen Name", "UserNameTextBox", 1, 50 ,"", "!@#$%^&*()_+{}|:\"<>?~-=[]\\;',./`φι") != true)
		{
			if (subbut)
			{
				subbut.disabled = false;
				subbut.value = origbutval ;
				return false ;
			}
		}
	}

	if(goValidateField("Email", "EmailTextBox", 6, 100 ,"@.", ",") != true) 
	{
		if (subbut)
		{
			subbut.disabled = false;
			subbut.value = origbutval ;
			return false ;
		}
	}

	if(goValidateField("Password", "PasswordTextBox", 6, 30 ,"", "") != true)
	{
		if (subbut)
		{
			subbut.disabled = false;
			subbut.value = origbutval ;
			return false ;
		}
	}

	if(goValidateField("Confirm Password", "ConfirmPasswordTextBox", 6, 30 ,"", "") != true)
	{
		if (subbut)
		{
			subbut.disabled = false;
			subbut.value = origbutval ;
			return false ;
		}
	}
	if(getById("PasswordTextBox").value == getById("UserNameTextBox").value)
	{
		alert("Password and UserName can not match. Please select another password.");
		subbut.disabled = false;
		subbut.value = origbutval ;
		return false ;
	}

	var pwd = getById("PasswordTextBox") ;
	var cpwd = getById("ConfirmPasswordTextBox") ;
	if (pwd && cpwd)
	{
		if(pwd.value != cpwd.value)
		{
			alert("Passwords do not match. Please retype your passwords.");
			pwd.select() ;
			pwd.focus() ;
			if (subbut)
			{
				subbut.disabled = false;
				subbut.value = origbutval ;
				return false ;
			}
			return false ;
		}
	}


	//check for bad pwds
	var isbadpwd = false ;
	var badpwds  = new Array("123456", 
								"ABCDEF",
								"Abcdef",
								"abcdef",
								"a",
								"ab",
								"abc",
								"abcd",
								"abcde",
								"abcdef",
								"abcdefg",
								"abcdefgh",
								"abcdefghi",
								"abcdefghij",
								"abcdefghijk",
								"abcdefghijkl",
								"abcdefghijklm",
								"abcdefghijklmn",
								"abcdefghijklmno",
								"abcdefghijklmnop",
								"abcdefghijklmnopq",
								"abcdefghijklmnopqr",
								"abcdefghijklmnopqrs",
								"abcdefghijklmnopqrst",
								"abcdefghijklmnopqrstu",
								"abcdefghijklmnopqrstuv",
								"abcdefghijklmnopqrstuvw",
								"abcdefghijklmnopqrstuvwx",
								"abcdefghijklmnopqrstuvwxy",
								"abcdefghijklmnopqrstuvwxyz",
								"ADMIN",
								"Admin",
								"admin",
								"admin1",
								"admin2",
								"admin3",
								"admin4",
								"admin5",
								"admin6",
								"admin7",
								"admin8",
								"admin9",
								"ADMINISTRATOR",
								"Administrator",
								"administrator",
								"asdfasdf",
								"PASSWORD",
								"Password",
								"password",
								" ",
								"  ",
								"   ",
								"    ",
								"     ",
								"      ",
								"       ",
								"        ",
								"         ",
								"          ",
								"           ",
								"            ",
								"             ",
								"              ",
								"               ",
								"                ",
								"1",
								"12",
								"123",
								"1234",
								"12345",
								"123456",
								"1234567",
								"12345678",
								"123456789",
								"1234567890",
								"000000",
								"111111",
								"222222",
								"333333",
								"444444",
								"555555",
								"666666",
								"777777",
								"888888",
								"999999",
								"000000")

	var tempstr = "" ;
	tempstr = getById("PasswordTextBox").value ;
	tempstr = tempstr.toLowerCase() ;

	var arraylen = badpwds.length ;
	var iloop ;
	for(iloop = 0; iloop < arraylen; iloop++)
	{
		//var tempfoundpos = tempstr.lastIndexOf(badpwds[iloop]) ;
		//alert("tempfoundpos=" + tempfoundpos) ;
		//if (tempfoundpos >= 0)
		var tstr = badpwds[iloop] ;
		tstr = tstr.toLowerCase() ;

		if (tstr == tempstr)
		{
			isbadpwd = true;
		}
	}

	if (isbadpwd == true)
	{
		alert("For your security, the PASSWORD must be more complex. Tip: make the PASSWORD longer and/or use more letters and numbers.") ;

		subbut.disabled = false;
		subbut.value = origbutval ;
		getById("PasswordTextBox").focus();
		//alert("returning false!!!");
		return false ;
	}





	//check for bad USERNAME
	var isbaduser = false ;
	var badusers2  = new Array("123456", 
								"a",
								"ab",
								"abc",
								"abcd",
								"abcde",
								"abcdef",
								"abcdefg",
								"abcdefgh",
								"abcdefghi",
								"abcdefghij",
								"abcdefghijk",
								"abcdefghijkl",
								"abcdefghijklm",
								"abcdefghijklmn",
								"abcdefghijklmno",
								"abcdefghijklmnop",
								"abcdefghijklmnopq",
								"abcdefghijklmnopqr",
								"abcdefghijklmnopqrs",
								"abcdefghijklmnopqrst",
								"abcdefghijklmnopqrstu",
								"abcdefghijklmnopqrstuv",
								"abcdefghijklmnopqrstuvw",
								"abcdefghijklmnopqrstuvwx",
								"abcdefghijklmnopqrstuvwxy",
								"abcdefghijklmnopqrstuvwxyz",
								"ABCDEF",
								"Abcdef",
								"abcdef",
								"abcdef",
								"ADMIN",
								"Admin",
								"admin",
								"admin1",
								"admin2",
								"admin3",
								"admin4",
								"admin5",
								"admin6",
								"admin7",
								"admin8",
								"admin9",
								"ADMINISTRATOR",
								"Administrator",
								"administrator",
								"asdfasdf",
								"MODERATOR",
								"Moderator",
								"moderator",
								"PASSWORD",
								"Password",
								"password",
								" ",
								"  ",
								"   ",
								"    ",
								"     ",
								"      ",
								"       ",
								"        ",
								"         ",
								"          ",
								"           ",
								"            ",
								"             ",
								"              ",
								"               ",
								"000000",
								"111111",
								"222222",
								"333333",
								"444444",
								"555555",
								"666666",
								"777777",
								"888888",
								"999999",
								"000000",
								"1",
								"12",
								"123",
								"1234",
								"12345",
								"123456",
								"1234567",
								"12345678",
								"123456789",
								"1234567890",
								"USERNAME",
								"Username",
								"username")

	var badusers  = new Array(	"ADMIN",
								"Admin",
								"admin",
								"admin1",
								"admin2",
								"admin3",
								"admin4",
								"admin5",
								"admin6",
								"admin7",
								"admin8",
								"admin9",
								"ADMINISTRATOR",
								"Administrator",
								"administrator",
								"asdfasdf",
								"MODERATOR",
								"Moderator",
								"moderator",
								"PASSWORD",
								"Password",
								"password",
								" ",
								"  ",
								"   ",
								"    ",
								"     ",
								"      ",
								"       ",
								"        ",
								"         ",
								"          ",
								"           ",
								"            ",
								"             ",
								"              ",
								"               ")


	var tempstr = "" ;
	tempstr = getById("UserNameTextBox").value ;
	tempstr = tempstr.toLowerCase() ;

	var arraylen = badusers.length ;
	//var iloop ;
	for(iloop = 0; iloop < arraylen; iloop++)
	{
		//var tempfoundpos = tempstr.lastIndexOf(badusers[iloop]) ;
		//alert("tempfoundpos=" + tempfoundpos) ;
		//if (tempfoundpos >= 0)
		var tstr = badusers[iloop] ;
		tstr = tstr.toLowerCase() ;
		if (tstr == tempstr)
		{
			isbaduser = true;
		}
	}

	if (isbaduser == true)
	{
		alert("The Screen Name chosen is invalid. Please select a different Screen Name") ;

		subbut.disabled = false;
		subbut.value = origbutval ;
		getById("UserNameTextBox").focus();
		//alert("returning false!!!");
		return false ;
	}



	if (getById("UserNameTextBox").value == getById("PasswordTextBox").value)
	{
		alert("For your security, the USERNAME and PASSWORD cannot be the same. Tip: make the USERNAME or PASSWORD longer and/or use more letters and numbers.") ;

		subbut.disabled = false;
		subbut.value = origbutval ;
		getById("UserNameTextBox").focus();
		//alert("returning false!!!");
		return false ;
	}




	if (subbut)
	{
		subbut.disabled = true;
		subbut.value = "Please Wait...";
	}

	return true ;

}






function UploadPhotoFormCheck()
{
	var origbutval = "" ;
	var buttonname = "SubmitButton" ;
	var filebox = "FileInput" ;

	//retain button value and disable button
	getById(buttonname).disabled = true;
	origbutval = getById(buttonname).value ;
	getById(buttonname).value = "Please wait...";


	//filebox
	if (getById(filebox).value == "")
	{
		alert("An image file is required.") ;
		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;

		getById(filebox).select();
		getById(filebox).focus();
		return false;
	}

	var tempstr = getById(filebox).value ;
	tempstr = tempstr.toLowerCase() ;
	var hasValidExt = false ; 
	if(tempstr.lastIndexOf(".jpg") >= 0)
	{
		hasValidExt = true ;
	}
	if(tempstr.lastIndexOf(".jpeg") >= 0)
	{
		hasValidExt = true ;
	}
	if(tempstr.lastIndexOf(".bmp") >= 0)
	{
		hasValidExt = true ;
	}
	//if(tempstr.lastIndexOf(".gif") >= 0)
	//{
	//	hasValidExt = true ;
	//}
	if(tempstr.lastIndexOf(".png") >= 0)
	{
		hasValidExt = true ;
	}
	//if(tempstr.lastIndexOf(".tif") >= 0)
	//{
	//	hasValidExt = true ;
	//}

	if (hasValidExt == false)
	{
		alert("The file selected must one of these formats: bmp, gif, jpg, jpeg, png, tif");
		getById(buttonname).disabled = false;
		getById(buttonname).value = origbutval ;

		getById(filebox).select();
		getById(filebox).focus();

		return false ;
	}

	return true ;
}









// XMLHTTPRequest

function dbReportComment(pVideo, pUser, pCommentID)
//function dbReportComment()
{
	alert("Reportcomment start") ;

	dbHTTP = null;
	if (window.XMLHttpRequest)
	{// code for all new browsers
		dbHTTP=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{// code for IE5 and IE6
		dbHTTP=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (dbHTTP != null)
	{
		dbHTTP.onreadystatechange = dbUpdatePage;
		//dbHTTP.open("GET",url,true);
		dbHTTP.open("POST","http://espressoengineering.tv/db-report-comment.asp",true);

		var params = "vid="+pVideo+"&user="+pUser+"&comment="+pCommentID ;
		dbHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		dbHTTP.setRequestHeader("Content-length", params.length);
		dbHTTP.setRequestHeader("Connection", "close");

		dbHTTP.send(params);
	}
	else
	{
		alert("Your browser does not support XMLHTTP.");
	}
}

function dbUpdatePage()
{
	if (dbHTTP.readyState==4)
	{// 4 = "loaded"
		if (dbHTTP.status==200)
		{// 200 = OK
			document.getElementById("dbReportCommentLink").value=dbHTTP.responseText;
			alert("updatepage got" + dbHTTP.responseText) ;
		}
		else
		{
			alert("Error sending data to server.");
		}
	}
}









