function ProcessFormData(callBackId, doValidation)
{
    if (Data)
    {
        alert("There are some unsaved changes to the form.\nPlease save the form changes before trying submit.");
        return false;
    }
    else
    {
        var returnValue = true;
        
        if (doValidation && typeof Validate_Form == 'function')
            returnValue = Validate_Form(controlIds);
        
        if (typeof Custom_Validate_Form == 'function')
            returnValue = Custom_Validate_Form(returnValue, controlIds);
           
        if (returnValue)
        {
            var xml = "";
                                
            var controls = controlIds.split(',');
            for (var i = 0; i < controls.length; i++)
            {
                var control = document.getElementById(controls[i]);
                if (control && control.getAttribute("includeInResults") && control.getAttribute("includeInResults").toLowerCase() == "true")
                {    
                    var value = "";
                    var label = "";
                    switch (control.getAttribute("objectType").toLowerCase())
                    {
                        case "textbox":
                        case "password":
                            value = control.value;
                            break;                                
                        case "hiddenfield":
                            if (control.getAttribute("specialValue") == "None" || control.getAttribute("specialValue") == "")
                                value = control.getAttribute("textValue");
                            else
                                value = "@" + control.getAttribute("specialValue") + "@";
                            break;
                        case "fileupload":
                            value = control.getAttribute("selectedFile");
                            break;
                        case "datepicker":
                            dateControl = document.getElementById(controls[i] + "_txt");
                            value = dateControl.value;
                            break;
                        case "dropdown":
                            value = control[control.selectedIndex].value;    
                            break;
                        case "textarea":
                            value = control.value;
                            break;
                        case "radiobutton":
                        case "checkbox":
                            value = "";
                            listItems = control.getElementsByTagName("INPUT");
                            for (var j = 0; j < listItems.length; j++)
                            {
                                if (listItems[j].checked)
                                {
                                    if (value == "")
                                        value = listItems[j].value;
                                    else
                                        value += "," + listItems[j].value;
                                }
                            }
                            break;
                        default:
                            value = "";
                            break;
                    }
                    label = control.getAttribute("displayName");
                    if (label == "" || label == undefined)
                        label = control.id;
                        
                    xml += "&lt;FormElement ID=\"" + control.getAttribute("objectId") + "\" controlId=\"" + control.id + "\" label=\"" + ChangeSpecialCharacters(label) + "\" value=\"" + ChangeSpecialCharacters(value) + "\" type=\"" + control.getAttribute("objectType").toLowerCase()+ "\" /&gt;";
                }
            }
            xml = ChangeTokens(xml);
            document.getElementById(hiddenResponseXml).value = ChangeHiddenControlCharacters(xml);
            
            if (typeof FormContainer_SaveForm == 'function')
                FormContainer_SaveForm(controlIds, xml);
            
            eval(callBackId).callback('FormData', xml);
        }
        return false;   
    }
}

function PreventSubmit(callBackId, formId)
{
    alert("You have voted already.");
    
    eval(callBackId).callback(formId);
    
    return false;
}

function SubmitAgain(callBackId, formId)
{
    eval(callBackId).callback(formId);
    
    return false;
}

function ChangeTokens(str)
{
    var replacedString = str;
    if (replacedString!=null)
    {
        replacedString = replacedString.replace(new RegExp("@PageUrl@","g"), hiddenPageUrl);
        replacedString = replacedString.replace(new RegExp("@PageTitle@","g"), hiddenPageTitle);
        replacedString = replacedString.replace(new RegExp("@Date@","g"), hiddenDate);
        replacedString = replacedString.replace(new RegExp("@IP@","g"), hiddenIP);
        replacedString = replacedString.replace(new RegExp("@PageId@","g"), hiddenPageId);
    }
    return replacedString;      
}

function ChangeSpecialCharacters(str)
{
    var replacedString = str;
    if (replacedString!=null)
    {
        replacedString = replacedString.replace(new RegExp("&","g"), "&amp;");
        replacedString = replacedString.replace(new RegExp("<","g"), "&lt;");
        replacedString = replacedString.replace(new RegExp(">","g"), "&gt;");
        replacedString = replacedString.replace(new RegExp("\"","g"), "&quot;");
        replacedString = replacedString.replace(new RegExp("'","g"), "\\'");
        replacedString = replacedString.replace(new RegExp("\n","g"), " "); 
    }
    return replacedString;          
}

function ChangeToOriginalCharacters(str)
{
    var replacedString = str;
    if (replacedString!=null)
    {
        replacedString = replacedString.replace(new RegExp("&amp;","g"), "&");
        replacedString = replacedString.replace(new RegExp("&lt;","g"), "<");
        replacedString = replacedString.replace(new RegExp("&gt;","g"), ">");
        replacedString = replacedString.replace(new RegExp("&spamp;","g"), "&");
        replacedString = replacedString.replace(new RegExp("&doublequot;","g"), "\"");
        replacedString = replacedString.replace(new RegExp("&splt;","g"), "<");
        replacedString = replacedString.replace(new RegExp("splt;","g"), "<"); 
    }
    return replacedString;          
}

function ChangeHiddenControlCharacters(str)
{
    var replacedString = str;
    if (replacedString!=null)
    {
        replacedString = replacedString.replace(new RegExp("&amp;","g"), "&");
        replacedString = replacedString.replace(new RegExp("&spamp;","g"), "&");
        replacedString = replacedString.replace(new RegExp("&doublequot;","g"), "\"");
        replacedString = replacedString.replace(new RegExp("&splt;","g"), "<");
        replacedString = replacedString.replace(new RegExp("splt;","g"), "<"); 
    }
    return replacedString;          
}

function Forms_OnCallbackComplete()
{
    if (Data)
    {
        //OnCallbackComplete();
    }
    else
    {
        var url = document.getElementById(hiddenThankYouUrl).value;
        var responseXml = document.getElementById(hiddenResponseXml).value;
        
        if (typeof FormContainer_OnFormSubmit == 'function')
            FormContainer_OnFormSubmit(url, responseXml);
        else if (url)
            post(url, responseXml);
            //window.location.href = url;   
    } 
}

function post(url, responseXml) 
{
	var temp = document.createElement("form");
	temp.action = url;
	temp.method = "POST";
	temp.style.display = "none";
	
	var opt = document.createElement("textarea");
	opt.name = "hiddenResponseXml";
	opt.value = responseXml;
	temp.appendChild(opt);
	
	document.body.appendChild(temp);
	temp.submit();
	
	return temp;
}


var diwindow;
function UploadClientFile(iconImg)
{  
    diwindow = dhtmlmodal.open('ClientFileUps','iframe', '/CLContextMenuUserControls/UploadClientFile.aspx?dir=' + formTitle + '&subdir=' + iconImg.id.replace("_img","") + '&controlId=' + iconImg.id.replace("_img",""), 'Display Item Upload', 'width=290px,height=216px,center=1,resize=0,scrolling=1');
    diwindow.onclose=function()
    { 
        var a=document.getElementById('ClientFileUps');
        var ifr=a.getElementsByTagName("iframe");
        window.frames[ifr[0].name].location.replace("about:blank") ; 
        return true;
    }            
}  

function SetClientFilePath(controlId, value)
{
    if (value.lastIndexOf('/') > -1)
    {
        document.getElementById(controlId).setAttribute("selectedFile", value);
        document.getElementById(controlId + "_txt").value = value.substring(value.lastIndexOf('/') + 1);
    }
}

function CloseDialogPopup()
{          
    parent.previewPopup.hide();
}    