﻿function trim(str) 
{
   while (str.substring(0,1) == ' ') str = str.substring(1);
   while (str.substring(str.length-1,str.length) == ' ') str = str.substring(0,str.length-1);
   return(str);
}

function isWhitespace (s)
{   
   var whitespace = " \t\n\r"; 
   var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (whitespace.indexOf(c) != -1) 
		{
			alert(s + " contain whitespace or linefeed.");
 			return true;
        }
    }
    return false;
}

function isEmpty(s)
{   
	if((s == null) || (s.length == 0))
		alert("Empty string.");
	return ((s == null) || (s.length == 0))
}

function echeck(str, lang)
{
   if(!lang)
   		lang = 0;
   var s = str;
   var i = 1;
   var sLength = s.length;
   var defaultEmptyOK = false;	
   var validstr = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@._-";
   if (isEmpty(s)) 
   if (echeck.arguments.length == 1) return defaultEmptyOK;
   else return (echeck.arguments[1] == true);
    if (isWhitespace(s)) return false;
   while ((i < sLength) && (s.charAt(i) != "@"))
      i++;
   if ((i >= sLength) || (s.charAt(i) != "@"))
   {
      if(lang == 0)
		  alert("Please enter a valid email.");
	  else
		  alert("يرجى إدخال عنوان بريد إلكتروني صالح.");
      return false;
   }
   else 
      i += 2;
   for(i = 0; i < sLength; i++) {
       if(validstr.indexOf(s.charAt(i)) == -1)  {
		  if(lang == 0)
			 alert("Please enter a valid email.");
		  else
          	 alert("يرجى إدخال عنوان بريد إلكتروني صالح..");
          return false
       }
   } 
   var lat = s.indexOf('@');
   if (lat > 0){
      if(s.substring(lat+1).indexOf('@')>0) {
		  if(lang == 0)
			alert("Invalid E-mail ID: double occurance of @");
		  else
			alert("بريد إلكتروني غير صالح: تم استخدام @ مرتين");
		return false
	  }	
   }
   while ((i < sLength) && (s.charAt(i) != "."))
      i++;
   var ldot = s.substring(lat+1).indexOf('.');
   if (ldot <= 0) {
	  if(lang == 0)
		alert("Invalid E-mail ID: missing '.'");
	  else
		alert("بريد إلكتروني غير صالح: ينقص النقطة");
	return false;
   }	
   i = s.lastIndexOf('.');
   if ((i >= sLength - 1) || (s.charAt(i) != "."))
   {
	  if(lang == 0)
	      alert("Invalid E-mail ID.\n there must be at least one character after the . ");      
	  else
	      alert("بريد إلكتروني غير صالح: يجب وجود حرف واحد على الأقل بعد النقطة");      
      return false;
   }
   else 
      return true;
}

function replaceAll(strReplace,StrOld, StrNew)
{
   while(strReplace.indexOf(StrOld)>=0)
      strReplace = strReplace.replace(StrOld, StrNew) ;

   return(strReplace);
}

function isLetter (c)
{   
    if(!(((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z"))))	
        alert( c + " character is not a letter ");
    return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c)
{   
    if(!(((c >= "0") && (c <= "9"))))	  
        alert(c +" is not a digit");
return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{   
    return (isLetter(c) || isDigit(c))
}

function isInteger(val)
{
    if (isBlank(val)){
	   return false;
     } 
    for(var i=0;i<val.length;i++){
	   if(!isDigit(val.charAt(i))){
		return false;
	   } 
     } 
   return true; 
} 

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function findPosX(obj)
{
	var curLeft = 0;
	if(obj)
	{
		if (obj.offsetParent)
		{
			while(1)
			{
				curLeft += obj.offsetLeft
			    if(!obj.offsetParent)
				  break;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curLeft += obj.x;
	}
	return curLeft;
}

function findPosY(obj)
{
    var curtop = 0;
	if(obj)
	{
		if(obj.offsetParent)
		{
			while(1)
			{
			  curtop += obj.offsetTop;
			  if(!obj.offsetParent)
				break;
			  obj = obj.offsetParent;
			}
		}
		else if(obj.y)
			curtop += obj.y;
	}
    return curtop;
}

function getAvailWidth()
{
	var winWidth = 0;        
	if (typeof(window.innerWidth) == 'number')        
		winWidth = window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth)
		winWidth = document.documentElement.clientWidth;
	else if (document.body && document.body.clientWidth)
		winWidth = document.body.clientWidth;
	return winWidth;
}

function getAvailHeight()
{
	var winHeight = 0;        
	if (typeof(window.innerHeight) == 'number')        
		winHeight = window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		winHeight = document.documentElement.clientHeight;
	else if (document.body && document.body.clientHeight)
		winHeight = document.body.clientHeight;
	return winHeight;
}

function formValidate(testMode) 
{
	var objQAnsNo, objQAnsNoA, objQAnsNoB, objQAnsNoC, strAnswer, strScaleWith, strReq, objCommentReq, objCommentField, objReq, objLayer;
	var qGrpQNoStart = 1;
	var qGrpQNoEnd = parseInt(MM_findObj("qCount").value);
	var randomNumber, rtnValue = 0;
	var numericString = "0123456789";
	var checkOK = "" 
	var checkStr = "";
	var allValid = true;
	var allNum = "";
	var checkValidBlock = "0,18,24,30,36,42,48,";
	var checkValidBlockReg = "";


	for(var iCount=qGrpQNoStart; iCount<=qGrpQNoEnd; iCount=iCount+1) {
		objReq = MM_findObj("qNum" + iCount + "_Required");
		if(objReq)
			strReq = objReq.value;
		else
			strReq = "No";
			
		if(checkValidBlock.indexOf("," + iCount + ",") > -1) {
			objLayer = MM_findObj("qNum" + iCount + "B")	
			if(objLayer) {
				if(trim(objLayer.value) == "") 
					checkValidBlockReg = "No";
				else
					checkValidBlockReg = "Yes";
			}
		}
		
		if(iCount > 17 && iCount < 54) {
			if(strReq == "No")
				strReq = checkValidBlockReg;
		} else {
			checkValidBlockReg = "";
		}
		
		rtnValue = 0;
		objQAnsNoA = MM_findObj("qNum" + iCount + "A");
		if(objQAnsNoA) {
			if(!testMode) {
				if(getSelectedRadio(objQAnsNoA) == -1 && strReq == "Yes") {
					objQAnsNoA[0].focus();
					rtnValue = 1;
					break;
				} else 
					strAnswer = "[[" + getSelectedRadioValue(objQAnsNoA) + "]]";
			} else { 
				//randomNumber = Math.floor(Math.random()*(objQAnsNoA.length))
				//objQAnsNoA[randomNumber].checked = true;
				strAnswer = "[[-]]";
			}
		} else 
			strAnswer = "[[-]]";
			
		if(MM_findObj("qNum" + iCount + "RelateWith"))
			strScaleWith = MM_findObj("qNum" + iCount + "RelateWith").value;
		else 
			strScaleWith = "-";
		objQAnsNoB = MM_findObj("qNum" + iCount + "B");
		if(objQAnsNoB) {
			if(strAnswer.indexOf(strScaleWith) > -1) {
				if(!testMode) {
					if(typeof(objQAnsNoB.type) == "undefined") {
						if(objQAnsNoB[0].type.indexOf("select") > -1) {
							strAnswer += "[[[";
							for(var i = 0; i < objQAnsNoB.length; i++) {
								if(objQAnsNoB[i].value == "0" && strReq == "Yes") {
									objQAnsNoB[i].focus();
									rtnValue = 4;
									break;
								} else {
									if(i == objQAnsNoB.length -1)
										strAnswer += objQAnsNoB[i].value;  
									else 
										strAnswer += objQAnsNoB[i].value + ":";  
								}
							}
							strAnswer += "]]]";
						} else if(objQAnsNoB[0].type == "radio") { 
							if(getSelectedRadio(objQAnsNoB) == -1 && strReq == "Yes") {
								objQAnsNoB[0].focus();
								rtnValue = 3;
								break;
							} else 
								strAnswer += "[[[" + getSelectedRadioValue(objQAnsNoB) + "]]]";
						}
					} else {
						if(objQAnsNoB.type == "text") {
							if(objQAnsNoB.value == "" && strReq == "Yes") {
								objQAnsNoB.focus();
								rtnValue = 2;
								break;
							} else {
								if(!MM_findObj("qNum" + iCount + "ScaleLimit")) {
									if(objQAnsNoB.value != "")
										strAnswer += "[[[" + objQAnsNoB.value + "]]]";
									else
										strAnswer += "[[[N/A]]]";
								} else {
									checkOK = numericString;
									checkStr = objQAnsNoB.value;
									decPoints = 0;
									allNum = "";
									for (i = 0;  i < checkStr.length;  i++)
									{
										ch = checkStr.charAt(i);
										for (j = 0;  j < checkOK.length;  j++)
											if (ch == checkOK.charAt(j))
												break;
										if (j == checkOK.length) 
										{
											allValid = false;
											objQAnsNoB.focus();
											break;
										}
										allNum += ch;
									}
									if(!allValid) {
										rtnValue = 3;
										objQAnsNoB.focus();
										break;
									} else {
										if(objQAnsNoB.value == 'N/A')
											strAnswer += "[[[N/A]]]";
										else if(parseInt(objQAnsNoB.value) <= parseInt(MM_findObj("qNum" + iCount + "ScaleLimit").value)) {
											if(objQAnsNoB.value == 0)
												strAnswer += "[[[N/A]]]";
											else
												strAnswer += "[[[" + objQAnsNoB.value + "]]]";
										} else {
											rtnValue = 3;
											objQAnsNoB.focus();
											break;
										}
									}
								}
							}
						} else if(objQAnsNoB.type == "hidden") {
							strAnswer += "[[[N/A]]]";
						} else if(objQAnsNoB.type.indexOf("select") > -1) {
							if(objQAnsNoB.value == "0" && strReq == "Yes") {
								objQAnsNoB.focus();
								rtnValue = 4;
								break;
							} else {
								strAnswer += "[[[" + objQAnsNoB.value + "]]]";;  
							}
						} else if(objQAnsNoB.type.indexOf("textarea") > -1) {
							if(trim(objQAnsNoB.value) == "" && strReq == "Yes") {
								objQAnsNoB.focus();
								rtnValue = 2;
								break;
							} else {
								if(objQAnsNoB.value == "")
									strAnswer += "[[[N/A]]]";
								else
									strAnswer += "[[[" + objQAnsNoB.value + "]]]";;  
							}
						}
					}
				} else { 
					if(typeof(objQAnsNoB.type) == "undefined") {
						if(objQAnsNoB[0].type.indexOf("select") > -1) {
							strAnswer += "[[[";
							for(var i = 0; i < objQAnsNoB.length; i++) {
								if(i == objQAnsNoB.length -1)
									strAnswer += objQAnsNoB[i].value;  
								else 
									strAnswer += objQAnsNoB[i].value + ":";  
							}
							strAnswer += "]]]";
						} else if(objQAnsNoB[0].type == "radio") {
							if(getSelectedRadio(objQAnsNoB) == -1)
								strAnswer += "[[[N/A]]]";
							else 
								strAnswer += "[[[" + getSelectedRadioValue(objQAnsNoB) + "]]]";
						}
					} else {
						//randomNumber = Math.floor(Math.random()*(objQAnsNoB.length -1))
						//objQAnsNoB[randomNumber].checked = true;
						if(trim(objQAnsNoB.value) == "")
							strAnswer += "[[[N/A]]]";
						else
							strAnswer += "[[[" + objQAnsNoB.value + "]]]";
					}
				}
			} else
				strAnswer += "[[[-]]]";
		} else 
			strAnswer += "[[[-]]]";
	
		//alert("strAnswer" + iCount + ": " + strAnswer);	
		objQAnsNo = MM_findObj("qNum" + iCount);
		if(objQAnsNo)
			objQAnsNo.value = strAnswer;
		if(rtnValue > 0) 
			break;
	}

	if(rtnValue == 5)
		alert("please enter your comment in comment field.");
	else if(rtnValue == 4)
		alert("please select value in select field.");
	else if(rtnValue == 3)
		alert("please select value in radio button.");
	else if(rtnValue == 2)
		alert("please enter value in text field.");
	else if(rtnValue == 1)
		alert("please select your answer in Yes/No field.");
	if(rtnValue > 0) 
		return false;
	else { 
		var objEm = MM_findObj("txtEmail");
		if(objEm) 
				objEm.disabled = false;
		return true;
	}
}

function getSelectedRadio(buttonGroup) 
{
	if (buttonGroup[0])  { 
		for (var i=0; i<buttonGroup.length; i++) {
			if (buttonGroup[i].checked)
				return i;
		}
	} else  {
		if (buttonGroup.checked) 
			return 0;
	}
	return -1;
} 

function getSelectedRadioValue(buttonGroup) 
{
	var i = getSelectedRadio(buttonGroup);
	if (i == -1) 
		return "-";
	else {
		if (buttonGroup[i]) 
			return buttonGroup[i].value;
		else 
			return buttonGroup.value;
	}
}

function toggleDisplayRadio(buttonGroup, bValue) 
{
	if(buttonGroup[0]) {
		for(var i = 0; i < buttonGroup.length; i++) {  
			if(bValue)
				buttonGroup[i].checked = false;	
			buttonGroup[i].disabled = bValue;
		}
	} else 
		buttonGroup[i].disabled = bValue;
}

function toggleRelateAnswer(iQCount) {
	var objQAnsNoA = MM_findObj("qNum" + iQCount + "A");
	var strAnswer = "[[" + getSelectedRadioValue(objQAnsNoA) + "]]";
	var strRelateWith = MM_findObj("qNum" + iQCount + "RelateWith").value;
	var objQAnsNoB = MM_findObj("qNum" + iQCount + "B");
	if(objQAnsNoB) {
		if(objQAnsNoB.type == "text") {
			if(!(strAnswer.indexOf(strRelateWith) > -1))
				objQAnsNoB.value = "";
			objQAnsNoB.disabled = !(strAnswer.indexOf(strRelateWith) > -1);
		} else if(objQAnsNoB.type.indexOf("select") > -1) {
			if(!(strAnswer.indexOf(strRelateWith) > -1))
				objQAnsNoB.selectedIndex = 0;
			objQAnsNoB.disabled = !(strAnswer.indexOf(strRelateWith) > -1);
	
		} else if(objQAnsNoB[0]) {
			if(objQAnsNoB[0].type == "radio")
				toggleDisplayRadio(objQAnsNoB, !(strAnswer.indexOf(strRelateWith) > -1));
		}
	}
}


function toggleCommentsField(tblId) 
{
	var objLayer;
	if(lastActiveCommentTable != tblId) { 
		if(lastActiveCommentTable != "") {
			objLayer = MM_findObj(lastActiveCommentTable);
			if(objLayer) 
				objLayer.style.display = 'none';  
		}
		objLayer = MM_findObj(tblId);
		if(objLayer) { 
			objLayer.style.display = 'block';
			lastActiveCommentTable = tblId; 
		}
	}
}

function hideLastCommentsField(container) {
	var objLayer = MM_findObj(lastActiveCommentTable);
	if(objLayer) 
		objLayer.style.display = 'none';  
	lastActiveCommentTable = "";
	objLayer = MM_findObj("ratTD" + container.substring(5));
	if(objLayer)
		objLayer.innerHTML = "";

}










