﻿
    // callback function that is executed after json request
    function subscribe_feedback(jsonData)
    {
        if (jsonData['result'])
        {
            // success
            document.getElementById('inschrijven-gelukt').style.display = 'block';
            document.getElementById('inschrijven-mislukt').style.display = 'none';

        } else {
            // error
            document.getElementById('inschrijven-gelukt').style.display = 'none';
            document.getElementById('inschrijven-mislukt').style.display = 'block';
            alert(jsonData['error']);
        }
        aObj.removeScriptTag();
    }
    
    // handle post of form
    function subscribe(form)
    {
        var form_values = get_form_values(form, "validate");        
        send_json_request(promailer_subscribe_url, form_values);
    }


    // make use of the json library to send a json request
    function send_json_request(promailer_subscribe_url, form_values)
    {
        //alert(promailer_subscribe_url + form_values);
        request = promailer_subscribe_url + form_values + '&callback=' + callback_function;
        aObj = new JSONscriptRequest(request);
        aObj.buildScriptTag();
        aObj.addScriptTag();
    }


    // walk through form and make a get string of the posted form
    function get_form_values(form_object, valFunc)
    {
       var ArrAllowedIds = new Array('id','action','json_subscribe_request','valid_email','subscribers_form[subscribers_inschrijvingsbron]','subscribers_form[subscribers_achternaam]','subscribers_form[subscribers_email]','subscribers_form[categories_id][234]', '');
       var str = "";
       var valueArr = null;
       var val = "";
       var cmd = "";

       // loop through all the elements in the form
       for(var i = 0; i < form_object.elements.length; i++)
       {       
            // create querystring, glueing it together depending on form field type
            switch(form_object.elements[i].type)
            {
               case "text":               
               default:               
                    // use validation function if required
                    if(valFunc)
                    {
                        //use single quotes for argument so that the value of
                        //form_object.elements[i].value is treated as a string not a literal
                        //cmd = valFunc + "(" + 'form_object.elements[i].value' + ")";
                        //val = eval(cmd)
                    }
                    
                    for(var j = 0; j < ArrAllowedIds.length; j++)
                    {                        
                        if (form_object.elements[i].name == ArrAllowedIds[j] && escape(form_object.elements[i].value) != "undefined" ) 
                        {
                            str += form_object.elements[i].name + "=" + escape(form_object.elements[i].value) + "&";   
                            break;
                        }
                    }                                                                                
                    break;

               case "checkbox":
                    if (form_object.elements[i].checked == true)
                    {
                        for(var j = 0; j < ArrAllowedIds.length; j++)
                        {                        
                            if (form_object.elements[i].name == ArrAllowedIds[j] ) 
                            {
                                str += form_object.elements[i].name + "=" + escape(form_object.elements[i].value) + "&";
                                break;
                            }
                        }                          
                    }
                    break;

               case "radio":                    
                    if (form_object.elements[i].checked == true)
                    {
                        str += form_object.elements[i].name + "=" + escape(form_object.elements[i].value) + "&";
                    }
                    break;


               case "select-one":                    
                    str += form_object.elements[i].name + "=" + form_object.elements[i].options[form_object.elements[i].selectedIndex].value + "&";
                    break;
           }
       }

       str = str.substr(0,(str.length - 1)); // remove last & from string
       //alert(str); // for debug
       return str;
    }

    // Constructor -- pass a REST request URL to the constructor
    //
    function JSONscriptRequest(fullUrl) {
        // REST request path
        this.fullUrl = fullUrl;
        // Keep IE from caching requests
        this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
        // Get the DOM location to put the script tag
        this.headLoc = document.getElementsByTagName("head").item(0);
        // Generate a unique script tag id
        this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
    }