function IsNumeric(entry) {
	var validChar = '0123456789'; 
	var strlen = entry.length;          
	if (strlen < 1){
		return false;
	} 
	//entry=entry.toUpperCase();          
	for (var i = 0; i < strlen; i++ ) {
	    if (validChar.indexOf(entry.charAt(i)) < 0) {
	       return false;
	       }
	    } 
	return true;
}

function getCalendarDate(){
	var months = new Array(12);
	months[0] = "January";
	months[1] = "February";
	months[2] = "March";
	months[3] = "April";
	months[4] = "May";
	months[5] = "June";
	months[6] = "July";
	months[7] = "August";
	months[8] = "September";
	months[9] = "October";
	months[10] = "November";
	months[11] = "December";
	var days = new Array(7);
	days[0] = "Sunday";
	days[1] = "Monday";
	days[2] = "Tuesday";
	days[3] = "Wednesday";
	days[4] = "Thursday";
	days[5] = "Friday";
	days[6] = "Saturday";
	var now = new Date();
	var monthnumber = now.getMonth();
	var monthname = months[monthnumber];
	var monthday = now.getDate();
	var year = now.getYear();
	var daynumber = now.getDay();
	var dayname = days[daynumber];
	
	if(year < 2000){
		year = year + 1900;
	}
	
	var dateString = dayname + ', ' + monthname + ' ' + monthday + ', ' + year;
	return dateString;
} 


function SumbitForm(){
	document.Log_Out.submit();		
}

function SumbitForm2(){
	document.CopyMoveForm.submit();		
}


function inputTest1(){
	var ok = true;

	var testfield1=document.getElementById('surveyName');
	var testfield2=document.getElementById('existingSID');
	var testfield3 = document.forms['form1'].elements['createType'];


	if (testfield3[0].checked){
		if (testfield1.value.length<1 ){
			ok=false;
			alert("Please insert Survey Name!");
		}
	}else{
		if (testfield2.selectedIndex < 0){
			ok=false;
			alert("Please select existing survey!");
		}
	}

	return ok;
}

function inputTest2(){
	var ok = true;

	testfield1=document.getElementById('surveyName');


	if (testfield1.value.length<1 ){
		ok=false;
		alert("Some of the fields are empty! Please insert at least one character !");
	}
	return ok;
}

function inputTest3(){
	var ok = true;
 
	testfield1=document.getElementById('pageName');


	if (testfield1.value.length<1 ){
		ok=false;
		alert("Some of the fields are empty! Please insert at least one character !");
	}
	return ok;
}

function inputTest4(){
	var ok = true;

	testfield1=document.getElementById('qtype');


	if (testfield1.value.length<1){
		ok=false;
		alert("Please select question type !");
	}
	return ok;
}


function inputTestTitle(){
	var ok = true;

	if (document.Form_1.qTitle.value.replace(/^\s*|\s*$/g,"").length<1){
		ok=false;
		alert("Enter the text for your question!");
	}
	return ok;
}

function inputTest5(){
	var ok = true;

	//testfield1=document.getElementById('qTitle');
	testfield2=document.getElementById('qRowNames');
	testfield3=document.getElementById('m_head');
	testfield4=document.getElementById('m_choice');


	if (document.Form_1.qTitle.value.replace(/^\s*|\s*$/g,"").length<1 || testfield2.value.replace(/^\s*|\s*$/g,"").length<1 || testfield3.value.replace(/^\s*|\s*$/g,"").length<1 || testfield4.value.replace(/^\s*|\s*$/g,"").length<1 ){
		ok=false;
		alert("Please fill all fields before Adding the question !");
	}

	return ok;
}

function inputTest6(){
	var ok = true;

	//testfield1=document.getElementById('qTitle');
	var testfield2=document.getElementById('qRowNames');

	if ((document.Form_1.qTitle.value.replace(/^\s*|\s*$/g,"").length<1) || (testfield2.value.replace(/^\s*|\s*$/g,"").length<1) ){
		ok=false;
		alert("Please fill all fields before Adding the question !");
	}

	return ok;
}

function inputTestChoice(){
	if (document.Form_1.qTitle.value.replace(/^\s*|\s*$/g,"").length<1){
		alert("Please enter the question before Adding the question !");
		return false;
	}else if(document.Form_1.qChoices.value.replace(/^\s*|\s*$/g,"").length<1){
		alert("Please fill answer choices before Adding the question !");
		return false;
	}
	return true;
}


function deleteconfirm(itemName)
{
	return confirm("Are you sure you wish to delete this "+itemName+" ?");
}

function checkRequired(){
  var oForm=document.forms['form1'];
  var qCodes=oForm['fields'].value.replace(/\|+/g, '|').replace(/^\||\|$/g, '').split('|');
  var qReq=oForm['RequiredF'].value;
  var qAll=[];
  var qFound=0;
  var qCheck=0;
  var qError=0;
  
  //Collect information about questions - their fields and required state - into objects
  for(var i=0; i<qCodes.length; i++)
  {
    var code=qCodes[i];
    var inf=code.split('X');
    if(!qAll[inf[0]]){ 
      qAll[inf[0]]={ 'code': inf[0], 'type': inf[1], 'required': qReq.search(new RegExp('(^|\\|)'+inf[0]+'X'+inf[1]+'X', 'gi'))!=-1, 'fields': [], 'choiceKeys': [], 'choices': 0, 'answers': 0 };
      qFound++;
    }
    var qObj=qAll[inf[0]];
    qObj.fields[code]=oForm[code];
    if(inf[2]!='0'){ if(!qObj.choiceKeys[inf[2]]){ qObj.choiceKeys[inf[2]]=true; qObj.choices++; } }
    if(inf[3] && inf[2]=='1'){ qObj.answers++; }
  }
  
  //Check all answers for proper value while assuming they are required, but only raise error if they really are required
  for(var id in qAll){
    var qObj=qAll[id];
    var qBox=document.getElementById('Question'+qObj.code);
    var requiredOk=false;
    var otherError=false;
    
    //Remove any error class from question
    qBox.className=qBox.className.replace(/(^| )(AnswerError|AnswerMissing)( |$)/gi, '$2');
    
    if(qObj.type=='1' || qObj.type=='2')
    {
      //What should happen if text-box contains text, but it's radio-box is not selected?
      var aRadios=qObj.fields[qObj.code+'X'+qObj.type+'X1'];
      for(var i=0; i<aRadios.length-(qObj.type=='1'?1:0); i++){ requiredOk=requiredOk || aRadios[i].checked; }
      if(qObj.type=='1'){requiredOk=requiredOk || (aRadios[aRadios.length-1].checked && qObj.fields[qObj.code+'X'+qObj.type+'X0'].value!='');}
    }
    else if(qObj.type=='3'){ requiredOk=qObj.fields[qObj.code+'X'+qObj.type+'X1'].selectedIndex!=0; }
    else if(qObj.type=='4' || qObj.type=='5')
    { 
      //What should happen if both "Other" and some other check-box is selected, but text-field is empty?
      //What should happen if text-box contains text, but it's check-box is not selected (both if no other is selected or some are)?
      for(var i=0; i<(qObj.type=='4'?qObj.choices-1:qObj.choices); i++){ requiredOk=requiredOk || qObj.fields[qObj.code+'X'+qObj.type+'X'+(i+1)].checked; }
      if(qObj.type=='4'){ requiredOk=requiredOk || (qObj.fields[qObj.code+'X'+qObj.type+'X'+(qObj.choices)].checked && qObj.fields[qObj.code+'X'+qObj.type+'X0'].value!=''); }
    }
    else if(qObj.type=='6' || qObj.type=='7')
    {
      requiredOk=true;
      for(var i=0; i<qObj.choices; i++)
      {
        var rowOk=false;
        for(var j=0; j<qObj.fields[qObj.code+'X'+qObj.type+'X'+(i+1)].length; j++){ rowOk=rowOk || qObj.fields[qObj.code+'X'+qObj.type+'X'+(i+1)][j].checked; }
        if(!rowOk){ requiredOk=false; }
      }
    }
    else if(qObj.type=='8' || qObj.type=='9')
    {
      requiredOk=true;
      for(var i=0; i<qObj.choices; i++)
      {
        var rowOk=qObj.type=='9';
        for(var j=0; j<qObj.answers; j++)
        {
          var field=qObj.fields[qObj.code+'X'+qObj.type+'X'+(i+1)+'X'+(j+1)];
          if(qObj.type=='8'){rowOk=rowOk || field.checked;}
          else if(field.selectedIndex==0){rowOk=false;}
        }                           
        if(!rowOk){ requiredOk=false; }
      }
    }                      
    else if(qObj.type=='10' || qObj.type=='11' || qObj.type=='12'){
      requiredOk=true;
      for(field in qObj.fields){ if(qObj.fields[field].value==''){requiredOk=false;} }
    }
    else if(qObj.type=='13' || qObj.type=='14')
    {
      var value=0; 
      var valid=0;
      var needSum=oForm[qObj.code+'SUM'];
      var trueSum=0;
      var regexPat=qObj.type=='13'?/^(-)?\d+$/:/(0?[1-9]|1[012])[\/](0?[1-9]|[12][0-9]|3[01])[\/]((19|20)\d\d)/;
      for(field in qObj.fields)
      {
        var fVal=qObj.fields[field].value;
        if(fVal!=''){value++;}
        if(fVal!='' && fVal.search(regexPat)!=-1){valid++; if(qObj.type=='13'){trueSum+=parseInt(fVal);}}
      }

      if(qObj.type=='13'){document.getElementById(qObj.code+"ERR").innerHTML=(needSum.value!='' && needSum.value!=trueSum?('The choices must sum to: '+needSum.value+'<br>\nCurrently they sum to: '+trueSum):'');}

      requiredOk=value==valid && value>0 && !(qObj.type=='13' && needSum.value!='' && needSum.value!=trueSum);
      otherError=value!=valid;
    }

    //If question required and not filled OR field has some other error, then add error class
    if(otherError){ qError++; qBox.className=qBox.className+' AnswerError'; }
    else if(qObj.required && !requiredOk){ qBox.className=qBox.className+' AnswerMissing'; }
    else{qCheck++;}
  }
  
  //These fields seem to be some odd experiment - they don't seem to affect anything though they are used in some places in ASP
  oForm['allCorrect'].value = qFound!=qCheck?'NO':'YES';
  oForm['wrongValues'].value = qFound!=qCheck?'':''; //allAlerts - 'alert1|alert2'

	if(qError!=0){ alert("Some fields are filled inproperly, please review answers and correct them!"); }
  else if(qFound!=qCheck){ alert('Please answer all required(*) questions !'); }
  
  return qFound==qCheck;
}

// ---------- datecheck
function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{

 			var month = parseInt(elems[0],10);
  			var day = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}


// ------ /


function checkMail(fieldName){
	var testfield = document.getElementById(fieldName).value;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	if(filter.test(testfield)){
		return true;
	}else if(fieldName == "emailForgot"){
		alert('Incorrect e-mail address');
		return false;
	}else{
		return false;
	}
} 

function SignUpCheck(){
	var testfName = document.getElementById("firstName");
	var testlName = document.getElementById("lastName");
	var company = document.getElementById("company");
	var testuName = document.getElementById("uname");
	var testpw1 = document.getElementById("pword1");
	var testpw2 = document.getElementById("pword2");
	var strMistakes="";


	
	if(testfName.value.length<1){
		strMistakes = strMistakes + "\n*missing first name";
	}

	if(testlName.value.length<1){
		strMistakes = strMistakes + "\n*missing last name";
	}

	if(checkMail("email")==false){
		strMistakes = strMistakes + "\n*incorrect e-mail address";
	}else{
		// ok
	}

	if(company.value.length<1){
		strMistakes = strMistakes + "\n*missing company name";
	}

	if(testuName.value.length<6){
		strMistakes = strMistakes + "\n*username must be at least 6 characters";
	}

	if(testpw1.value.length<6){
		strMistakes = strMistakes + "\n*password must be at least 6 characters";
	}else if(testpw1.value==testpw2.value){
		// ok
	}else{
		strMistakes = strMistakes + "\n*retyped password does not match";		
	}


	if(strMistakes.length > 0){
		alert("Unable to sign up, please correct following error(s):"+"\n" +strMistakes);
		return false;
	}else{
		return true;
	}
}
function getWindowHeight() {
	var windowHeight = 0;
	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	}
	else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}

function setProgressBarPosition() {
	var windowWidth = 0;
	if (typeof(window.innerWidth) == 'number') {
		windowWidth = window.innerWidth;
	}
	else {
		if (document.documentElement && document.documentElement.clientWidth) {
			windowWidth = document.documentElement.clientWidth;
		}
		else {
			if (document.body && document.body.clientWidth) {
				windowWidth = document.body.clientWidth;
			}
		}
	}
	if (document.getElementById('stretch_me') !=null){
		document.getElementById('stretch_me').style.width = windowWidth - 450 + 'px';	
	}	
	document.getElementById('stretch_me2').style.width = windowWidth - 450 + 'px';

}

function setFooter() {
	if (document.getElementById) {
		var windowHeight = getWindowHeight();
		if (windowHeight > 0) {
			var contentElement = document.getElementById('content');
			var footerElement = document.getElementById('footer');
			var headerElement = document.getElementById('header');
			var prw_headerElement = document.getElementById('prw_header');
			var headerHeightPX;

			if (contentElement !=null) {
				var contentHeight = document.getElementById('content').offsetHeight;
			}
			if (footerElement !=null) {
				var footerHeight  = footerElement.offsetHeight;
			}

			if (headerElement !=null) {
				headerHeightPX = headerElement.offsetHeight;
			}
			else if (prw_headerElement !=null) {
				headerHeightPX = prw_headerElement.offsetHeight;
			}
			else {
				headerHeightPX = 0;
			}
			
			if (windowHeight - (contentHeight + footerHeight + headerHeightPX) >= 0) {
				footerElement.style.position = 'relative';
				footerElement.style.top = (windowHeight - (contentHeight + footerHeight + headerHeightPX)) + 'px';	
			}
			else {
				footerElement.style.position = 'static';
			}
		}
	}
}
window.onload = function() {
	setFooter();
	init(); //layer function
};
window.onresize = function() {
	setFooter();
	init(); //layer function
};

function checkDateField() {
	if (document.form_update.month.value != '' || document.form_update.year.value != '' || document.form_update.minutes.value != '' || document.form_update.day.value != '' || document.form_update.hours.value != '' ){
		if (checkNumber(document.form_update.month, 1, 2, 1, 12, 'You must enter the month. (1-12)') == false || checkNumber(document.form_update.day, 1, 2, 1, 31, 'You must enter the day. (1-31)') == false || checkNumber(document.form_update.minutes, 1, 2, 1, 59, 'You must enter the minute. (1-59)') == false || checkNumber(document.form_update.hours, 1, 2, 0, 23, 'You must enter the hour. (0-23)') == false || checkNumber(document.form_update.year, 4, 4,2004,2009, 'You must enter the year. (up to 5 years in front)') == false){
			return false;
		}
		document.form_update.enabled.value=1;
	}
	return true;
}
function y2k(number) { 
	return (number < 1000) ? number + 1900 : number;
}
function checkNumber(e, minLen, maxLen, minVal, maxVal, errorMsg) {
	var v = parseInt(e.value);
	if ((isNaN(v) || e.value.length < minLen || e.value.length > maxLen || v < minVal || v > maxVal)) {
		alert('The date you entered is not complete.\n' + errorMsg);
		e.focus();
		return false;
	} else {
		return true;
	}
}
function CheckSurvey() {
	if (checkDateField() == true){
		return true;
	}
	return false;
}

function checkRelevantRB(){
	document.form_update.incSurveyLink.blur();
	if(!document.form_update.incSurveyLink.checked)
	{
		document.form_update.AfterComp[2].checked = true; 
		document.form_update.surShowtoAll[0].checked = true;
	}
}
