function $(objID)
{
    return document.getElementById(objID);
}

//open a new window to show data capture config file
function newWin(xmlContainerId)
{
   var xmlContainer = $(xmlContainerId);
   var xmlStr =  xmlContainer.innerHTML;
   var newWin = window.open('','','');
   newWin.document.write(xmlStr);		   
}

var errArr;//Array to save input validation info

function getErrMsgObj()
{
    return $("divErrMsg");
}

/*output success/fail info in current page*/
function checkReturnValue(thankText, errorText,resendText)
{
    var qs = new Querystring();
    var retParaVal = qs.get('r');
    if (!retParaVal)
        return;
    //clear filled data in form    
    var formInputs = $("FormInputs");
    if (formInputs) 
        formInputs.innerHTML = "";
        
    if(typeof translateToHtml == "function")
    {
        thankText = translateToHtml(thankText);
	    errorText = translateToHtml(errorText); 
	}
	var errMsgObj = getErrMsgObj();
    switch (retParaVal)
    {
       case '0': errMsgObj.innerHTML = thankText != "" ? thankText : "Thank you, data was submitted successfully."; break;
       case '1': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Incorrect protocol (not HTTPS)."; break;
       case '2': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Invalid target URL format(i.e. http://sitename/xx-yy/project.aspx)."; break;
       case '3': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Invalid HTTP referrer."; break;
       case '4': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Invalid [ProjectId | Market | UriFileName] combination."; break;
       case '5': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Project not live."; break;
       case '6': errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with this error: Invalid fields supplied."; break;
       case '7': errMsgObj.innerHTML = resendText != "" ? resendText : "Can not send data again."; break;
       case '-1':
       default: errMsgObj.innerHTML = errorText != "" ? errorText : "Failed to submit data with unspecified error."; break; 
    } 
}

/*restrict the max length of textarea*/
function CheckMaxLen(txtObj, maxLen)
{
    if (txtObj.value.length > maxLen)
    {
        txtObj.value = txtObj.value.substring(0, maxLen);
    }
}

/*check whether at least/most one options is selected in radio/checkbox group*/
function isSelected_InputGroup(inputType, inputName)
{
	var frmObj = $("frmDataCapture");
	var inputArr = frmObj.getElementsByTagName("input");   
	var isSelected = false; 
	for (var i=0; i<inputArr.length; i++)
	{
		if(inputType.toLowerCase() == inputArr[i].type && inputArr[i].name == inputName  && inputArr[i].checked)
		{
			isSelected = true; 
			break; 
		}
	}
   return isSelected;
}

/*check whether the input texts pass regular expression validation*/
function isValid_InputText(objId, validator)
{
	var obj = $(objId);
	if(!obj || !validator || validator=="")
		return true;
	var patt1 = new RegExp(validator);
	return patt1.test(obj.value);
}

/*save error to array if one item is not selected or inputted*/
function checkInput(errArr, dtrlId, validator, ctrlType, error,errid)
{
    if(ctrlType == "radio" || ctrlType == "checkbox")
    {
        $(errid).style.display = "none";
    }
    else
    {
        $(errid).innerHTML = "";
    }
    if (error == "")
    error = "Please define your own error for " + ctrlType + ":" + dtrlId;
    
    if(!errArr)
    {
         errArr= new Array();
    }
	switch (ctrlType)
	{
		case "text":
		case "textarea":
		case "password":
		        if (validator == "")
		            return true;
				if(!isValid_InputText(dtrlId, validator))
				{
					errArr.push(error);
					$(errid).innerHTML = error;
				}
				break;
		case "checkbox":
		        if (validator == "")
		            return true;
				if (!isSelected_InputGroup(ctrlType, dtrlId))
				{
				    errArr.push(error);	
				    $(errid).innerHTML = error;		
				    $(errid).style.display = "block";	
				}
				break;
		case "radio":		        
				if (!isSelected_InputGroup(ctrlType, dtrlId))
				{
				    errArr.push(error);	
				    $(errid).innerHTML = error;		
				    $(errid).style.display = "block";	
				}
				break;
		default:break;
	}
}

/*output errors saved in error array*/
function checkAll()
{    
    produceCheckInfo();
    var errMsgObj = getErrMsgObj();
    errMsgObj.innerHTML = "";
	if (errArr.length <= 0)
	{		
		return true;
	}
	else
	{	
//		for (var i=0; i<errArr.length; i++)
//		{						
//			errMsgObj.innerHTML += "<div>" + errArr[i] + "</div>";
//		}
		return false;
	}
}

function clearError() 
{
    getErrMsgObj().innerHTML = "";
    var errspan = $("frmDataCapture").getElementsByTagName("SPAN");
    for(i=0;i<errspan.length;i++)
    {
        if(errspan[i].className == "errmsgspan")
        {
            errspan[i].innerHTML = "";
        }
    }
    return true;
}
                               
/*user could write own 'translateToHtml' function to display thank/error text as HTML like below, and include own js to head block*/
/*
function translateToHtml(strToHandle)
{
    return strToHandle.replace(/&lt;/ig, "<").replace(/&gt;/ig, ">");
}
*/
