/**
 *	@author Geffrey Caruso
 *	@fileoverview
 *
 *	Some general Javascript utility functions
 *  for use with the IRIS website
 */

var xor_key = 6;

function validateForm_LoginSubmit()
{
	return true;
}

function validateForm_EmailPassword()
{
	return true;
}

function validateForm_RetrieveKey()
{
	return true;
}

function validateForm_RegisterSubmit() {	
	var str = "";
	var elements = document.forms["RegisterSubmit"].getElementsByTagName('input');
	// loop through all input elements in form
	for(var i = 0; i < elements.length; i++) 
	{
		// check if element is mandatory; ie has a pattern  
		var pattern = elements.item(i).getAttribute('pattern');
		var pattern_type = elements.item(i).getAttribute('pattern_type');
		var allowNull = elements.item(i).getAttribute('allowNull');
		if (pattern != null && pattern_type == "MATCH") 
		{
			var value = elements.item(i).value;
			// validate the value of this element, using its defined pattern
			var offendingChar = value.match(pattern);

			// if an invalid character is found or the element was left emtpy
			if(offendingChar != null || (value.length == 0 && allowNull != "true")) 
			{
				// add up all error messages
				str += elements.item(i).getAttribute('errorMsg') + "<br />" +
              		"Found this illegal value: '" + offendingChar + "' \n";
				break;
			}
		}
   		else if (pattern != null && pattern_type == "TEST")
   		{
     		var RegExpObj = new RegExp(pattern);
     		if (!RegExpObj.test(elements.item(i).value))
     		{
     			// Do we want to allow null values to pass test?
     			if(elements.item(i).value == "" && allowNull == "true")
     			{
     				break;
     			}
     			str += elements.item(i).getAttribute('errorMsg') + "<br />";
     			break;
     		}
   		}
   		// This is added in to allow null values 
   		// and zero length strings in the search 
   		// user fields.
   		else if (pattern !== null && pattern_type == "ALLOW_NULL")
   		{
   			value = elements.item(i).value;
   			offendingChar = value.match(pattern);
   			
   			if (offendingChar != null)
   			{
   				str += elements.item(i).getAttribute('errorMsg') + "<br />" +
              		"Found this illegal value: '" + offendingChar + "' \n";
				break;
   			}
   		}
   		else if (pattern_type == "NOT_NULL")
   		{
   			value = elements.item(i).value;
   			if(value == null || value == "")
   			{
   				str = elements.item(i).getAttribute('errorMsg');
   				break;
   			}
   			
   		}
		
		var min_reqs = elements.item(i).getAttribute('min_len');
		var max_reqs = elements.item(i).getAttribute('max_len');
		
		if (min_reqs != null && max_reqs != null) 
		{
   			var value = elements.item(i).value;
   			if (value.length < min_reqs || value.length > max_reqs) {
     			str += elements.item(i).getAttribute('display_name') + " must be between "+ 
     				min_reqs+" and "+max_reqs+" characters." + '\n';
     			break;
   			}
 		} 
 	}
	var stateField = document.getElementById("state");
	if(stateField != null)
	{
		if(stateField.value == "1")
		{
			str = "You must select a state"
		}
	}
 	if (str != "") 
 	{ 
 	    // Set the error message in the error DIV.
 		var errorDiv = document.getElementById("errorField");	    
		errorDiv.innerHTML = str;
		return false;
	}
	else
	{
		return true;
	}
 }

/**
 * This function verifies that the 
 * passwords fields are equal.<b> 
 *
 * @ author aaltemus
 */
function verifyPassword()
{
    var password = document.getElementById("password");
    var confirm_password = document.getElementById("confirm_password");
    var errField = document.getElementById("errorField");	   
	if (password != null && password.value != confirm_password.value)
	{
		errField.innerHTML = "The password fields do not match.";
		return false;
	}	
	else
	{
		errField.innerHTML = '&nbsp';
		return true;
	}
}

/**
 * Opens the given URL
 */
function open_window(url_add,windowName,width,height)
 {
   window.open(url_add,windowName, 'width='+width+',height='+height+',menubar=no,status=no,location=no,toolbar=no,scrollbars=no');
}

/**
 * show the privacy policy
 */
function show_pp()
{
	window.open('/pages/tour/content/privacy.html','pp','width=440,height=625,directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no');
}

/**
 * show the IRIS D EULA
 */
function show_eula_d()
{
    window.open('/pages/tour/content/license.html','license','width=440,height=525,menubar=no,status=no,location=no,toolbar=no,scrollbars=yes');
}

/** 
 * Gets the cookie
 */
function getCookie( name ) 
{
  var start = document.cookie.indexOf( name + "=" );
  var len = start + name.length + 1;
  if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) 
  {
    return null;
  }
  if ( start == -1 ) return null;
  var end = document.cookie.indexOf( ";", len );
  if ( end == -1 ) end = document.cookie.length;
  return unescape( document.cookie.substring( len, end ) );
}

/** 
 * Sets the cookie
 */
function setCookie( name, value, expires, path, domain, secure ) 
{
  var today = new Date();
  today.setTime( today.getTime() );
  if ( expires ) 
  {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );
  document.cookie = name+"="+escape( value ) +
    ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

/** 
 * Deletes the cookie
 */
function deleteCookie( name, path, domain ) 
{
  if ( getCookie( name ) ) document.cookie = name + "=" +
    ( ( path ) ? ";path=" + path : "") +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function checkUser()
{
	var cookie = getCookie("rememberme");
	if (cookie != null && cookie != "null" && cookie.length > 0)
	{
		var userField = document.getElementById("username");
		var passField = document.getElementById("password");
		var checkBox = document.getElementById("rememberme");
		if (userField != "null");
		{
			var strings = cookie.split("|");
			if (strings.length >0)
			{
				userField.value = decrypt_str(strings[0]);
				passField.value = decrypt_str(strings[1]);
				checkBox.checked = true;
			}
		}
	}
}

function xor_str(str)
{
	var the_res="";//the result will be here
	for(i=0;i<str.length;i++)
	{
		the_res+=String.fromCharCode(xor_key^str.charCodeAt(i));
	}
	return the_res;
}
 
function decrypt_str(str)
{
	var res="";
	for(i=0;i<str.length;i++)
	{
		res+=String.fromCharCode(xor_key^str.charCodeAt(i));
	}
	return res;
}

function remember()
{
	var checkBox = document.getElementById("rememberme");
	if (checkBox.checked)
	{
		var username = xor_str(document.getElementById("username").value);
		var password = xor_str(document.getElementById("password").value);
		var cookie = username + "|" + password;
		setCookie("rememberme",cookie,"365","","","");
	}
	else
	{
		deleteCookie("rememberme", "", "");
	}
}

function clearCookie()
{
	deleteCookie("rememberme", "", "");
	document.getElementById("rememberme").checked = false;
}
