var uriAJAX = '/shared_public/serverRequest.php';

function disableMailing(strEmail, elEmailDiv, elMessageDiv, strType) {
    if (strType=='nocommercial') {
        var strAction   = 'setuserdeffields';
        var strSetting  = '[commercial|off]';
    }
    else if (strType=='nomailing') {
        var strAction   = 'disablemailing';
        var strSetting  = '';
    }
	// do the ajax-thingy if valid
	new Ajax.Request(uriAJAX, {
		method: 'get',
		parameters: {
			action: strAction,
			s: strSetting,   // Type
			m: strEmail      // Email
		},
		onSuccess: function (xmlHttpResponse) {
		    //alert(xmlHttpResponse.responseText);
			if (xmlHttpResponse.responseText.isJSON()) {
				arrReturn = xmlHttpResponse.responseText.evalJSON();
				var msg;
				//if (!arrReturn['errordata']) {
				if (!arrReturn['error']) {
				    if (arrReturn['modified']==0) {
				        msg = "Afmelding succesvol: Je ontvangt vanaf nu geen commerci&euml;le boodschappen meer van partners van Laurens Simonse Groep. ";
				    }
				    else {
				        msg = "Afmelding succesvol: Je ontvangt vanaf nu geen commerci&euml;le boodschappen meer van partners van Laurens Simonse Groep. ";
				    }
				}
				else {
				    msg = "#"+arrReturn['error']['code']+": "+arrReturn['error']['msg'];
				}
				elMessageDiv.update(msg);
				if (!elMessageDiv.visible())    elMessageDiv.toggle();
				setTimeout('elMessageDiv.hide();',6000);
				return true;
			} else {
                elMessageDiv.update('Het email adres ['+strEmail+'] kon nu niet afgemeld worden, probeer het later nog eens!');
                elMessageDiv.toggle();
				//alert(xmlHttpResponse.responseText);
				return false;
			}
		},
		onFailure: function () {
            elMessageDiv.toggle();
			//alert(xmlHttpResponse.responseText);
			return false;
		}
	});
}

// Request an verification mail be sent by the SO server
function requestVerificationMail(strEmail, elMailDiv, elMessageDiv, strConcept) {
	// do the ajax-thingy if valid
	new Ajax.Request(uriAJAX, {
		method: 'get',
		parameters: {
			action: 'sendverification',
			m: strEmail,     // Email
			c: strConcept    // Concept
		},
		onSuccess: function (xmlHttpResponse) {
		    //alert(xmlHttpResponse.responseText);
			if (xmlHttpResponse.responseText.isJSON()) {
				arrayList = xmlHttpResponse.responseText.evalJSON();
				for (arrayID in arrayList) {
				    //Walk through the 3 arrays
                    failure = parseJSON(arrayID, arrayList[arrayID], elMessageDiv);
                    if (failure.length>0)   break;
				}
				if (failure.length>0) {
				    var errorCode= failure.shift();
				    var errorMsg = failure.pop();
				    elMessageDiv.update('#'+errorCode+': '+errorMsg);
				    if (!elMessageDiv.visible())    elMessageDiv.toggle();
				    if (!elMailDiv.visible())       elMailDiv.toggle();
				    return false;
				}
				else {
				    elMessageDiv.update('De verificatie link is verstuurd aan ['+strEmail+']');
				    if (!elMessageDiv.visible())   elMessageDiv.toggle();
                    return true;
				}
			} else {
                elMessageDiv.update('#8: De verificatie link kon niet verstuurd worden!');
                elMessageDiv.toggle();
				//alert(xmlHttpResponse.responseText);
				return false;
			}
		},
		onFailure: function () {
            elMessageDiv.toggle();
			//alert(xmlHttpResponse.responseText);
			return false;
		}
	});
}

// returns the contact data
function getContactData(elMessage, elEmail, strEmail, strHash) {
    var failure;

	// do the ajax-thingy if valid
	new Ajax.Request(uriAJAX, {
		method: 'get',
		parameters: {
			action: 'getcontactdata',
			m: strEmail, // Email
			h: strHash   // Hash
		},
		onSuccess: function (xmlHttpResponse) {
			if (xmlHttpResponse.responseText.isJSON()) {
				arrReturn = xmlHttpResponse.responseText.evalJSON();
				for (arrayID in arrReturn) {
				    //Walk through the 3 arrays
                    failure = parseJSON(arrayID, arrReturn[arrayID], elMessage);
                    if (failure.length>0)   break;
				}
				if (failure.length<1) {
                    elSettings.toggle();
				}
				else {
				    var errorCode= failure.shift();
				    var errorMsg = failure.pop();
				    elMessage.update('#'+errorCode+': '+errorMsg);
				    if (!elMessage.visible())   elMessage.toggle();
				    if (!elEmail.visible())     elEmail.toggle();
				    return false;
				}
			} else {
                elMessage.update('#9: Uw contactgegevens konden niet opgehaald worden!');
                elMessage.toggle();
				//alert(xmlHttpResponse.responseText);
				return false;
			}
		},
		onFailure: function () {
            elMessage.toggle();
			//alert(xmlHttpResponse.responseText);
			return false;
		}
	});
}

// get the mail settings
function getMailSettings(elSettings, elEmailDiv, elMessage, strEmail, strHash) {
    var failure;

	// do the ajax-thingy if valid
	new Ajax.Request(uriAJAX, {
		method: 'get',
		parameters: {
			action: 'getcheckboxes',
			m: strEmail, // Email
			h: strHash   // Hash
		},
		onSuccess: function (xmlHttpResponse) {
			if (xmlHttpResponse.responseText.isJSON()) {
			    //alert(xmlHttpResponse.responseText);
				arrayList = xmlHttpResponse.responseText.evalJSON();
				for (arrayID in arrayList) {
				    //Walk through the 3 arrays
                    failure = parseJSON(arrayID, arrayList[arrayID], elMessage);
                    if (failure.length>0)   break;
				}
				if (failure.length<1) {
                    elSettings.toggle();
				}
				else {
				    var errorCode= failure.shift();
				    var errorMsg = failure.pop();
				    elMessage.update('#'+errorCode+': '+errorMsg);
				    if (!elMessage.visible())   elMessage.toggle();
				    if (!elEmailDiv.visible())  elEmailDiv.toggle();
				    return false;
				}
			} else {
                elMessage.update('#10: Uw email instellingen konden niet opgehaald worden!');
                elMessage.toggle();
				//alert(xmlHttpResponse.responseText);
				return false;
			}
		},
		onFailure: function () {
            elMessage.toggle();
			//alert(xmlHttpResponse.responseText);
			return false;
		}
	});
}

// set the mail settings
function setMailSettings(elBtnSave, elMessage, strEmail, strHash, arrSettings, strConcept) {
	// do the ajax-thingy if valid
	new Ajax.Request(uriAJAX, {
		method: 'get',
		parameters: {
			action: 'setcheckboxes',
			m: strEmail,     //Email
			h: strHash,      //Hash
			s: arrSettings,  //Settings
			c: strConcept    //Concept
		},
		onSuccess: function (xmlHttpResponse) {
			if (xmlHttpResponse.responseText.isJSON()) {
				arrayList = xmlHttpResponse.responseText.evalJSON();
				for (arrayID in arrayList) {
				    //Walk throug the array
                    failure = parseJSON(arrayID, arrayList[arrayID], elMessage);
                    if (failure.length>0)   break;
				}

				if (failure.length>0) {
				    var errorCode= failure.shift();
				    var errorMsg = failure.pop();
				    elMessage.update('#'+errorCode+': '+errorMsg);
				    if (!elMessage.visible())
				        elMessage.toggle();
				    return false;
				}
				else {
                    elMessage.update('Je instellingen zijn opgeslagen!');
				    if (!elMessage.visible())
				        elMessage.toggle();
                    return true;
				}
			} else {
                elMessage.toggle();
                elMessage.update('#11: Je instellingen zijn niet opgeslagen!');
				//alert(xmlHttpResponse.responseText);
				return false;
			}
		},
		onFailure: function () {
            elMessage.toggle();
			//alert(xmlHttpResponse.responseText);
			return false;
		}
	});
}


// Sets the fields
function parseJSON(strType, listData, elMessage) {
    var failure = Array();
    //var str = '';

    for (ID in listData) {
        value = listData[ID];
        switch(strType) {
            case "errordata":
                try {
                    switch(ID) {
                        case "errorcode":   failure.unshift(value);     break;  //Insert @ beginning
                        case "errormsg":    failure.push(value);        break;  //Insert @ end
                    }
                } catch(error){}
                break;
            case "contactdata":
                try {
                    $(ID).update(value);
                } catch(error){}
                break;
            case "mailing":
            case "alerts":
            case "newsletter":
                var identifier = strType+ID;
                if(strType=='mailing' && ID!='CM' && value=='on')   value='off';
                else if(strType=='mailing' && ID!='CM' && value=='off')   value='on';

                //SET the buttons
                if(value=='off') {
                    try {
                        $(identifier).writeAttribute('src','/shared_public/images/icons/off.png');
                        $(identifier).writeAttribute('status','off');
                    } catch(error){}
                }
                else if(value=='on') {
                    try {
                        $(identifier).writeAttribute('src','/shared_public/images/icons/on.png');
                        $(identifier).writeAttribute('status','on');
                    } catch(error){}
                }
                break;
        }
    }
    //alert(str);
    return failure;
}