//This is a library of client side functions used for Premises

//Opens a seperate window with passed url
function openwin(prmhref)
{
	window.open(prmhref);
}

//Returns value trimmed of spaces
function alltrim(prm)
{
	var retprm;
	var icount;
	
	retprm="";
	icount = prm.length;
	
	for (i=0;i<icount;i++)
	{
		if (prm.substr(i,1)!=" ")
		{
			retprm = retprm + prm.substr(i,1);
		}
	}
	return retprm;	
}

//Returns true if space found in a string
function spacefound(prm)
{
	var retprm = false;
	var icount;
	
	icount = prm.length;
	
	for (i=0;i<icount;i++)
	{
		if (prm.substr(i,1) == " ")
		{
			retprm = true;
			return retprm;
		}
	}

	return retprm;	
}

function hndlqt(prm)
{
	var retprm;
	var objregexp;
	objregexp = new RegExp("'","g")

	//Terminator For MySQL 
	//(Comment the retprm = .... statement of this section and uncomment the 
	//retprm =.... statement in Terminator for others section when using 
	//other RDBMS)

	retprm = prm.replace(objregexp,"\\'");

	//Terminator For Others 
	//(Comment the retprm = statement of this section and uncomment the 
	//retprm = .... statement in Terminator for others section when using 
	//MYSql)

	//retprm = prm.replace(objregexp,"''");


	return retprm;
}

//Validates and submits search form from search
function submitsearch(prmobjform)
{
	var strmessage= "";
	var afterdate = (parseInt(prmobjform.elements["from_year"].value)*10) + parseInt(prmobjform.elements["from_month"].value);

	var beforedate = (parseInt(prmobjform.elements["to_year"].value)*10) + parseInt(prmobjform.elements["to_month"].value);


	if (alltrim(prmobjform.elements["search_string"].value) == "")
	{
//		strmessage = strmessage + "Containing the words field can not be blank\n\n";
	}

	if (beforedate<afterdate)
	{
		strmessage = strmessage + "Before date can not be less than After date \n\n";
	}

	if (prmobjform.elements["search_type"][3].checked == true)
	{
		if (splcharsfound(prmobjform.elements["search_string"].value) == true)
		{
			strmessage = strmessage + "Single or Double Quotes, hyphen and brackets not allowed in boolean search\n\n";
		}
	}


	if (alltrim(strmessage) == "")
	{
		prmobjform.submit();
	}
	else
	{
		alert(strmessage);
		return false;
	}
}


//Validates and submits comment form from Premise
function submitcomment(prmobjform)
{
	if (alltrim(prmobjform.elements["comment"].value) != "")
	{
		prmobjform.submit();
	}
	else
	{
		alert("No Comments to submit...");
		return false;
	}
}

//Validates and submits login form from Home
function submitlogin(prmobjform)
{
	if (alltrim(prmobjform.elements["username"].value) == ""||alltrim(prmobjform.elements["password"].value) == "")
	{
		alert("Username OR Password can not be blank");
		return false;
	}
	else
	{
		prmobjform.submit();

	}

}

//Validates and submits Registration form from Registration
function submitreg(prmobjform)
{
	var strmsg = "";

	var objaccept = prmobjform.elements["accept"];
	var objlast_name = prmobjform.elements["last_name"];
	var objfirst_name = prmobjform.elements["first_name"];
	var objemail = prmobjform.elements["email"];
	var objusername = prmobjform.elements["username"];
	var objpassword = prmobjform.elements["password"];
	var objcpassword = prmobjform.elements["cpassword"];

	//Check terms acceptance
	
	if (objaccept.value.toUpperCase()!="I ACCEPT")
	{

		strmsg = strmsg + "Cannot process registration unless Terms of Use and Privacy Policy are accepted.";
		alert(strmsg);
		return false;
	}

	//Check last name
	if (alltrim(objlast_name.value)=="")
	{
		strmsg = strmsg + "Please enter your Last Name.\n\n";
	}

	//Check first name
	if (alltrim(objfirst_name.value)=="")
	{
		strmsg = strmsg + "Please enter your First Name.\n\n";
	}

	//Check Email
	if (validateemail(objemail.value) == false)
	{
		strmsg = strmsg + "Please enter your valid Email address.\n\n";
	}

	//Check user name
	if (alltrim(objusername.value) == "" || objusername.value.length < 6 || spacefound(objusername.value) == true)
	{
		strmsg = strmsg + "Please enter your Username (minimum 6 characters long. Username cannot contain blank space).\n\n";
	}

	//Check password
	if (checkpassword(objpassword.value,objcpassword.value) == false)
	{
		strmsg = strmsg + "Please enter and confirm your Password (minimum 6 to maximum 10 characters long. Password can not contain blank space) .\n\n";
	}

	//Check '/" in user name & password 
	if (splcharsfound(objusername.value) == true || splcharsfound(objpassword.value)==true)
	{
		strmsg = strmsg + "Username and Password cannot contain special characters.\n\n";
	}


	//If no error found then submit form
	if (alltrim(strmsg) != "")
	{
		alert(strmsg);
		return false;
	}
	else
	{
		//alert("Form submitted");
		prmobjform.submit();

	}

}


//Validates and submits Idea form from submitpremise.php
function submitidea(prmobjform)
{
	var strmsg = "";

	if (alltrim(prmobjform.elements["last_name"].value)=="")
		strmsg = strmsg + "Please enter your Last Name.\n\n";

	if (alltrim(prmobjform.elements["first_name"].value)=="")
		strmsg = strmsg + "Please enter your First Name.\n\n";

	if (validateemail(prmobjform.elements["email"].value) == false)
		strmsg = strmsg + "Please enter your valid Email address.\n\n";

	if (alltrim(prmobjform.elements["premise_title"].value)=="")
		strmsg = strmsg + "Please enter a Name or Title for your idea.\n\n";

	if (alltrim(prmobjform.elements["premise_description"].value)=="")
		strmsg = strmsg + "Please enter a Description for your idea.\n\n";

	//If no error found then submit form
	if (alltrim(strmsg) != "")
	{
		alert(strmsg);
		return false;
	}
	else
	{
		//alert("Form submitted");
		prmobjform.submit();
	}
}


function checkpassword(password,cpassword)
{
	var retval = true;

	//if password cpassword do not match
	if (password != cpassword)
	{
		retval = false;
	}
	
	//if password or cpasword is blank
	if (alltrim(password) == "" || alltrim(cpassword) == "" || spacefound(password) == true)
	{
		retval = false;
	}
	
	//if password is not within 6 to 10 characters
	if (password.length<6 || password.length>10)
	{
		retval = false;
	}

	return retval;
}

//validation for Email Addresses
function validateemail(prmvalue)
{
	var icount;			
	var retval;
	var tagcount;
	var idotcount;

	retval = true;
	tagcount = 0;
	idotcount = 0;
	icount=0;
	strmsg = "";
				
	if (alltrim(prmvalue)=="")
	{				
		retval = false
	}	
	else
	{
		for (icount=0;icount < prmvalue.length; icount++)
		{	
			if (prmvalue.charAt(icount) == "@")
			{
					tagcount++;
					if (tagcount > 1) 
					{
						retval = false;
						break;
					}						 
					if (icount == 0 || icount==prmvalue.length-1)
					{
						retval = false;
						break;
					}	
				 
			}

			if (prmvalue.charAt(icount) == ".")
			{
					idotcount++;
					if (icount == 0 || icount==prmvalue.length-1)
					{
						retval = false;
						break;
					}	
			}
		}
		
		if (tagcount == 0)
		{
			retval = false;	
		}
				
		if (idotcount == 0)
		{
			retval = false;	
		}
	}
			
	return retval;									
}

function submitmember(prmform)
{
	//If subject or content is blank
	if(alltrim(prmform.elements["subject"].value)=="" ||alltrim(prmform.elements["body"].value)=="" )
	{
		alert ("Subject or Content can not be blank");
		return false;
	}
	else
	{
		prmform.submit();
	}
}

//Validates and submits edit a premise
function editpremise(prmform)
{
	//If premise is blank
	if(alltrim(prmform.elements["premise_id"].value)=="")
	{
		alert ("Please enter a Premise ID");
		return false;
	}
	else
	{
		prmform.submit();
	}
}

//Validates and submits to add a comment for a premise
function submitaddcomment(prmform)
{
	//If premise is blank
	if(alltrim(prmform.elements["comment"].value)==""||alltrim(prmform.elements["submitter_id"].value)=="")
	{
		alert ("Comment & Submitter ID can not be blank");
		return false;
	}
	else
	{
		prmform.submit();
	}
}

//Validates and submits to add a new premise
function submitnewpremise(prmform)
{
	var strmessage = "";

	//If category not selected
	if(alltrim(prmform.elements["cat_id"].value)=="0")
	{
		strmessage = strmessage + "Please select Category\n";
	}

	//If title is blank
	if(alltrim(prmform.elements["title"].value)=="")
	{
		strmessage = strmessage + "Please enter Title\n";
	}

	//If description is blank
	if(alltrim(prmform.elements["description"].value)=="")
	{
		strmessage = strmessage + "Please enter Description\n";
	}

	//If predecessor id is not a number
	if(alltrim(prmform.elements["predecessor_id"].value)!="")
	{
		if (isNaN(prmform.elements["predecessor_id"].value))
		{
			strmessage = strmessage + "Entered Predecessor ID is Not Numeric\n";
		}
	}

	//If author date is blank
	if(alltrim(prmform.elements["author_date"].value)=="")
	{
		strmessage = strmessage + "Please enter Date\n";
	}

	//If author date is invalid
	if(validatedate(prmform.elements["author_date"])==false)
	{
		strmessage = strmessage + "Please enter valid Date as MM-DD-YYYY\n";
	}


	if (alltrim(strmessage)!="")
	{
		alert(strmessage);
		return false;
	}
	else
	{
		prmform.submit();
	}
}

//Validates a date
function validatedate(objInput)
{
  // var strDatestyle = 'US'; //United States date style
   var strDatestyle = 'EU';  //European date style
   var strDate;
   var strDateArray;
   var strDay;
   var strMonth;
   var strYear='';
   var intday;
   var intMonth;
   var intYear;
   var booFound = false;
   var datefield = objInput.value;

   var strSeparatorArray = new Array('-','/');

   var intElementNr;
   var err = 0;
   var strMonthArray = new Array(12);

	
   strMonthArray[0] = 'Jan';
   strMonthArray[1] = 'Feb';
   strMonthArray[2] = 'Mar';
   strMonthArray[3] = 'Apr';
   strMonthArray[4] = 'May';
   strMonthArray[5] = 'Jun';
   strMonthArray[6] = 'Jul';
   strMonthArray[7] = 'Aug';
   strMonthArray[8] = 'Sep';
   strMonthArray[9] = 'Oct';
   strMonthArray[10] = 'Nov';
   strMonthArray[11] = 'Dec';
   strDate = objInput.value;
   

  for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
  {
      if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
      {
         strDateArray = strDate.split(strSeparatorArray[intElementNr]);
         if (strDateArray.length != 3) 
			{	err = 1;
				return false;
			}
         else 
			{
			strMonth = strDateArray[0];
			strDay = strDateArray[1];
			strYear = strDateArray[2];
			}

		booFound = true;
	   }
   }

   if (booFound == false) 
	{ 
	   return false
      if (strDate.length>5)
      {
		strDay = strDate.substr(0, 2);
		strMonth = strDate.substr(2, 2);
		strYear = strDate.substr(4);
      }
   }

   if (strYear.length == 2) {strYear = '20' + strYear;}
   
   // US style
   if (strDatestyle == 'US') {
	strTemp = strDay;
	strDay = strMonth;
	strMonth = strTemp;
   }

   intday = parseInt(strDay, 10);
   if (isNaN(intday)) {err = 2; return false;}
   intMonth = parseInt(strMonth, 10);
   if (isNaN(intMonth)) 
   {  for (i = 0;i<12;i++) 
      {
 	if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) 
	{
	   intMonth = i+1;
	   strMonth = strMonthArray[i];
	   i = 12;
        }
      }
      if (isNaN(intMonth)) {err = 3; return false;}
   }
   intYear = parseInt(strYear, 10);strYear='' + intYear;
   if (strYear.length == 1) {strYear = '200' + intYear;}
   if (strYear.length == 2) {strYear = '20' + intYear;}
   if (strYear.length == 3) {strYear = '2' + intYear;}
   if (strYear.length > 4) {strYear = strYear.substr(0, 4);}
   if (isNaN(intYear)) {err = 4; return false;}
  if (intMonth>12 || intMonth<1) {err = 5; return false;}
  if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || 
	intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
   {err = 6; return false;}
  if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) 
	&& (intday > 30 || intday < 1)) 
   {err = 7; return false;}
   if (intMonth == 2)
   {  if (intday < 1) 
      {err = 8; return false;}
      if (LeapYear(intYear) == true) 
      { if (intday > 29) {err = 9; return false;}}
      else {if (intday > 28) {err = 10; return false;}}
   }

   return true;	
}


//Check leap year
function LeapYear(intYear) 
{
   if (intYear % 100 == 0) {
      if (intYear % 400 == 0) { return true; }
   }
   else {if ((intYear % 4) == 0) { return true; }}
   return false;
}

//Searches for ',",(,),- in string
//if found returns true else returns false
function splcharsfound(prmstring)
{
	var objregexp;
	//objregexp = new RegExp("'|\"","g")
	objregexp = new RegExp("['\"\(\)\-]","g")
	//objregexp = new RegExp("['\"\-]","g")

	if (objregexp.exec(prmstring)!=null)
	{
		return true;
	}
	else
	{
		return false;
	}

}