﻿Ext.onReady(function() {
    Ext.QuickTips.init();
    // Default headers to pass in every request
    Ext.Ajax.hasDefaultHeaders = false;
    Ext.Ajax.defaultHeaders = {
        "Content-Type": "application/json; charset=utf-8;"
    };
    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';
    var formDivElements = Ext.DomQuery.select('div[formdiv]');
    if (formDivElements != null && formDivElements.length > 0) {
        for (var i = 0; i < formDivElements.length; i++) {
            formDivElements[i].innerHTML = "<img src='/lib/ext/resources/images/default/shared/loading-balls.gif'/>";
            displayForm(formDivElements[i]);
        }
    }
});

function displayForm(formDiv) {
    Ext.Ajax.request({
        url: 'FormService.svc/REST/ExtFormConfig/' + formDiv.id,
        success: function(result, request) {
            var formConfig = Ext.util.JSON.decode(result.responseText);
            renderForm(formDiv, Ext.util.JSON.decode(formConfig.GetExtFormFirstPageConfigResult));
        },
        failure: function(result, request) {
            Ext.MessageBox.alert('Failed', result.responseText);
        }
    });
}
function getQuestionAnswer(field) {
    var answer = new Object();
    answer.QuestionId = field.name;
    answer.AnswerListItems = new Array();
    switch (field.getXType()) {
        case "combo":
            answer.AnswerListItems[answer.AnswerListItems.length] = field.getValue();
            break;
        case "radiogroup":
        case "checkboxgroup":
            for (var j = 0; j < field.items.items.length; j++) {
                if (field.items.items[j].getValue())
                    answer.AnswerListItems[answer.AnswerListItems.length] = field.items.items[j].inputValue;
            }
            break;
        default:
            answer.AnswerText = field.getValue();
            break;
    }
    return answer;
}
function renderForm(formDiv, extFormConfig) {
    var simple = new Ext.FormPanel(extFormConfig);
    simple.addButton({
        text: 'Submit',
        handler: function() {
            if (simple.getForm().isValid()) {
                var jsonPrarams = new Object();
                var field;
                jsonPrarams.requestId = extFormConfig.requestId;
                jsonPrarams.formId = extFormConfig.formId;
                jsonPrarams.pageId = extFormConfig.pageId;
                jsonPrarams.answers = new Array();
                for (var i = 0; i < simple.getForm().items.items.length; i++) {
                    field = simple.getForm().items.items[i];
                    if (field.isFormField) {
                        jsonPrarams.answers[i] = getQuestionAnswer(field);
                    }
                }
                Ext.Ajax.request({
                    url: 'formservice.svc/REST/Form/Submit',
                    params: Ext.encode(jsonPrarams),
                    method: 'POST',
                    success: function(result, request) {
                        var response = Ext.util.JSON.decode(result.responseText);
                        formDiv.innerHTML = response.SubmitFormResult.ThankYou;
                        //var headerElement = Ext.DomQuery.selectNode('head');
                        //headerElement.innerHTML += getGoogleTrackingCode();
                        //Ext.getBody().innerHTML += getYahooTrackingCode();
                        var labelcode = "UUpLCMKwggEQ7Pnk7AM";
                        //if (extFormConfig.formId == 'c54a00da-3a40-4c6b-aea2-951ad3ab6590')
                            labelcode = "SqjjCIaPpgEQ7Pnk7AM";
                        runGoogleConversionCode(labelcode);
                    },
                    failure: function(result, request) {
                        Ext.MessageBox.alert('Failed', result.responseText);
                    }
                });
            }
        }
    });
    formDiv.innerHTML = "";
    simple.render(formDiv);
}
function runGoogleConversionCode(labelcode) {
    var ifrm = document.createElement("IFRAME");
    var aurl = "ppcTrackingCode.aspx?lcode=" + labelcode + "&rnd=" + Math.random();
    ifrm.setAttribute("src", aurl);
    ifrm.style.width = "0px";
    ifrm.style.height = "0px";
    document.body.appendChild(ifrm);
    return;
}
function getYahooTrackingCode() {
    var yahooTrackingCode = '<SCRIPT language="JavaScript" type="text/javascript">';
    yahooTrackingCode += '<!-- Yahoo!';
    yahooTrackingCode += 'window.ysm_customData = new Object();';
    yahooTrackingCode += 'window.ysm_customData.conversion = "transId=,currency=,amount=";';
    yahooTrackingCode += 'var ysm_accountid  = "1NGRNG3U11MLBEPNN0QIRNO73SO";';
    yahooTrackingCode += 'document.write("<SCR" + "IPT language=\'JavaScript\' type=\'text/javascript\' " ';
    yahooTrackingCode += '+ "SRC=//" + "srv2.wa.marketingsolutions.yahoo.com" + "/script/ScriptServlet" + "?aid=" + ysm_accountid ';
    yahooTrackingCode += '+ "></SCR" + "IPT>");\'';
    yahooTrackingCode += '// -->';
    yahooTrackingCode += '</SCRIPT>';
    return yahooTrackingCode;
}
function getGoogleTrackingCode() {
    var googleTrackingCode = '<!-- Google Code for Enquiry Form Submission Conversion Page -->';
    googleTrackingCode += '<script language="JavaScript" type="text/javascript">';
    googleTrackingCode += '<!--';
    googleTrackingCode += 'var google_conversion_id = 1033452780;';
    googleTrackingCode += 'var google_conversion_language = "en_GB";';
    googleTrackingCode += 'var google_conversion_format = "3";';
    googleTrackingCode += 'var google_conversion_color = "ffffff";';
    googleTrackingCode += 'var google_conversion_label = "UUpLCMKwggEQ7Pnk7AM";';
    googleTrackingCode += '//-->';
    googleTrackingCode += '</script>';
    googleTrackingCode += '<script language="JavaScript" src="http://www.googleadservices.com/pagead/conversion.js">';
    googleTrackingCode += '</script>';
    googleTrackingCode += '<noscript>';
    googleTrackingCode += '<img height="1" width="1" border="0" src="http://www.googleadservices.com/pagead/conversion/1033452780/?label=UUpLCMKwggEQ7Pnk7AM&amp;guid=ON&amp;script=0"/>';
    googleTrackingCode += '</noscript>;';
    return googleTrackingCode;
}