var mgFormLoader = {
	mgm : null,
	responseMessage : "",
	failedResponseMessage : "",
	packagedData : new Array(),
	lastEmailCalled: "",
	alertMessage: "Please check you have correctly completed the fields marked in red.",
	protoScript : "",
	trackingLoaded : true,
    maxWait: 5000,
    waitStep: 50,
    currentWait: 0,
	mgTrack : function() {
		if (mgFormLoader.mgm.tracker != null) {
			mgFormLoader.trackingLoaded = false;
			if ( mgFormLoader.mgm.tracker.indexOf('http') == 0 ) {
		        var img = new Image();
		        img.onload = mgFormLoader.setTrackingLoaded;
		        img.onerror = mgFormLoader.setTrackingLoaded;
		        img.src = url;
			} else {
				var mg_form = document.getElementById('mg_form');
				var trackNode = document.createElement('div');
				trackNode.style.width = '1px';
				trackNode.style.height = '1px';
				trackNode.innerHTML = mgFormLoader.mgm.tracker.replace('%%cb%%',mgFormLoader.mgm.cb);
				mg_form.appendChild(trackNode);
				setTimeout("mgFormLoader.setTrackingLoaded()", 1500);
			}
		}
		if (mgFormLoader.mgm.lead != null) {
			mgFormLoader.trackingLoaded = false;
            var leadImg = new Image();
            leadImg.onload = mgFormLoader.setTrackingLoaded;
            leadImg.onerror = mgFormLoader.setTrackingLoaded;
            leadImg.src = mgFormLoader.mgm.lead.replace('NOCACHE',mgFormLoader.mgm.cb);
		}
		if (mgFormLoader.mgm.fromLayout && mgFormLoader.mgm.fromLayoutType) {
            var actionImg = document.createElement('img');
            actionImg.src = mgFormLoader.mgm.domain + "/in-text/incAction.jsp?layoutType=" + mgFormLoader.mgm.fromLayoutType + "&layout=" + mgFormLoader.mgm.fromLayout;
		}
	},
	getElementsByTagNames : function(tag_names, parent_node) {
		if (typeof parent_node == 'undefined') {
			parent_node = document;
		}
		var elems = new Array();
		for ( var i = 0; i < tag_names.length; i++) {
			elemsFound = parent_node.getElementsByTagName(tag_names[i]);
			for ( var j = 0; j < elemsFound.length; j++) {
				elems.push(elemsFound[j]);
			}
		}
		return elems;
	},
	packageData : function() {
		//console.log('executing packageData');
		//try {
			i=0;
			var theform = document.getElementById("theform");
			var fields = mgFormLoader.getElementsByTagNames( [ 'input', 'textarea', 'select','password' ], theform);
			var mgArgs = "site_id=" + mgFormLoader.mgm.site + "&";
			mgFormLoader.packagedData[i] = new Array(2);
			mgFormLoader.packagedData[i][0] = encodeURI("site_id");
			mgFormLoader.packagedData[i][1] = encodeURI(mgFormLoader.mgm.site);
			i++;
			var dateArray = new Array("_yy","_mm","_dd");
			if (mgFormLoader.mgm.source != null) {
				mgArgs += "source_id=" + mgFormLoader.mgm.source + "&";
				mgFormLoader.packagedData[i] = new Array(2);
				mgFormLoader.packagedData[i][0] = encodeURI("source_id");
				mgFormLoader.packagedData[i][1] = encodeURI(mgFormLoader.mgm.source);
				i++;
			}
			for ( var loop1 = 0; loop1 < fields.length; loop1++) {
				var field = fields[loop1];
				if (field.type == "checkbox" || field.type == "radio") {
					if (field.checked) {
						mgArgs += encodeURI(field.name) + "=" + encodeURI(field.value) + "&";
						mgFormLoader.packagedData[i] = new Array(2);
						mgFormLoader.packagedData[i][0] = encodeURI(field.name);
						mgFormLoader.packagedData[i][1] = encodeURI(field.value);
						i++;
					}
				} else if (field.name.indexOf('_dd') > 0) {
					//add it to date array to be processed separately
					var fieldName = field.name.substring(0,field.name.length-3);
					mgArgs += encodeURI(fieldName) + "=" ;
					for ( var loop2 = 0; loop2 < dateArray.length; loop2++) {
						for ( var loop3 = 0; loop3 < fields.length; loop3++) {
							if (fields[loop3].name == fieldName + dateArray[loop2]){
								mgArgs += encodeURI(fields[loop3].value) + "-";
								mgFormLoader.packagedData[i] = new Array(2);
								mgFormLoader.packagedData[i][0] = encodeURI(fields[loop3].name);
								mgFormLoader.packagedData[i][1] = encodeURI(fields[loop3].value);
								i++;
							}
						}
					}
					mgArgs = mgArgs.substring(0, mgArgs.length - 1);
					mgArgs += "&";
				} else if (field.name.indexOf('_mm') < 0 && field.name.indexOf('_yy') < 0){
					mgArgs += encodeURI(field.name) + "=" + encodeURI(field.value) + "&";
					mgFormLoader.packagedData[i] = new Array(2);
					mgFormLoader.packagedData[i][0] = encodeURI(field.name);
					mgFormLoader.packagedData[i][1] = encodeURI(field.value);
					i++;
				}
			}
			mgArgs = mgArgs.substring(0, mgArgs.length - 1);
			return mgArgs;
		//} catch (err) {
			//console.log(err.toString());
		//}
		return null;
	},
	clearContents : function(elem) {
		while (elem.childNodes[0]) {
			elem.removeChild(elem.childNodes[0]);
		}
	},
	applyParams : function(text, params) {
		var value = text;
		if (params) {
			for (var child in params) {
				value = value.replace(new RegExp("%" + child + "%", "ig"), params[child]);
			}
		}
		return value;
	},
	handleResponse : function(request) {
		//console.log('executing handleResponse');
		//try {
			mgFormLoader.populateResponse();
			var responseText = request.responseText;
			var response = {status:"unknown",urls:[]};
			if (responseText.indexOf("<status>") == 0) {
				var i = responseText.indexOf("</status>");
				if (i > 0) {
					response.status = responseText.substring(8, i);
				}
			} else if (responseText.charAt(0) == '{') {
				eval("response="+responseText+";");
			}

			if (response.status == 'new') {
				mgFormLoader.mgTrack();
				mgFormLoader.urls = response.urls;
				mgFormLoader.track();
			} else {
				mgFormLoader.responseMessage = mgFormLoader.failedResponseMessage;
			}

			if (mgFormLoader.responseMessage.indexOf("URL:") == 0){
				mgFormLoader.redirectURL = mgFormLoader.applyParams(mgFormLoader.responseMessage.substring(4, mgFormLoader.responseMessage.length), response.params);
				mgFormLoader.redirect();
			} else {
				var thediv = document.createElement('div');
				thediv.innerHTML = mgFormLoader.applyParams(mgFormLoader.responseMessage, response.params);
				var theform = document.getElementById("theform");
				mgFormLoader.clearContents(theform);
				theform.appendChild(thediv);
			}
		//} catch (err) {
			//console.log(err.toString());
		//}
	},
    track: function() {
		mgFormLoader.trackingLoaded = false;
    	var urls = mgFormLoader.urls;
    	if (!urls || !urls.length) {
    		mgFormLoader.setTrackingLoaded();
    		return;
    	}
    	var url = urls.shift();
        url = url.replace("NOCACHE", "" + new Date().getTime());
        var func = function() {
        	mgFormLoader.track();
        };

        var img = new Image();
        img.onload = func;
        img.onerror = func;
        img.src = url;
    },
	setTrackingLoaded : function() {
		mgFormLoader.trackingLoaded = true;
	},
	redirect : function() {
		if (mgFormLoader.trackingLoaded == true  || mgFormLoader.currentWait > mgFormLoader.maxWait) {
			top.location.href= mgFormLoader.redirectURL;
			return;
		}
		mgFormLoader.currentWait += mgFormLoader.waitStep;
        setTimeout("mgFormLoader.redirect()",mgFormLoader.waitStep);
	},
	handleValidationResponse : function(request) {
		//console.log('executing handleResponse');
		//try {
			var thediv = document.createElement('div');
			mgFormLoader.populateResponse();
			if (request.responseText.indexOf("EMAIL") >= 0) {
				 thediv.innerHTML = mgFormLoader.responseMessage;
				}
			 else {
				thediv.innerHTML = mgFormLoader.failedResponseMessage;
			}
			var theform = document.getElementById("theform");
		    theform.appendChild(thediv);
		//} catch (err) {
			//console.log(err.toString());
		//}
	},
	eventPush : function(obj, event, handler) {
		//console.log("executing eventPush");
		if (obj.addEventListener) {
			obj.addEventListener(event, handler, false);
		} else if (obj.attachEvent) {
			obj.attachEvent('on' + event, handler);
		}
	},
	
	populateResponse : function() {
		//console.log('executing populateResponse');
		//try {
			for ( var loop1 = 0; loop1 < mgFormLoader.packagedData.length; loop1++) {
				mgFormLoader.responseMessage = mgFormLoader.responseMessage.replace("%%"+mgFormLoader.packagedData[loop1][0]+"%%", mgFormLoader.packagedData[loop1][1]);
				mgFormLoader.failedResponseMessage = mgFormLoader.failedResponseMessage.replace("%%"+mgFormLoader.packagedData[loop1][0]+"%%", mgFormLoader.packagedData[loop1][1]);
				if (mgFormLoader.mgm.tracker != null){
					mgFormLoader.mgm.tracker =  mgFormLoader.mgm.tracker.replace("%%"+mgFormLoader.packagedData[loop1][0]+"%%", mgFormLoader.packagedData[loop1][1]);
				}
			}
		//} catch (err) {
			//console.log(err.toString());
		//}
		return null;
	},
	displayLoader : function() {
		var theform = document.getElementById("theform");
		mgFormLoader.clearContents(theform);
		var theimg = document.createElement('img');
		theimg.src = mgFormLoader.mgm.domain + '/images/ajax_loader.gif';
		theimg.border = 0;
		var left = theform.style.width.replace('px','');
		var top = theform.style.height.replace('px','');
		theimg.style.marginLeft = left/2 -12 + 'px';
		theimg.style.marginTop =  top/2 -12 + 'px';
		theform.appendChild(theimg);
	},
   
	submit : function(e) {
		Event.stop(e);
		if (!mgFormLoader.validate()) return false;
		//console.log('executing mgSubmit');
		var mgArgs = mgFormLoader.packageData();
		mgArgs += "&client=microsite";
		var url = mgFormLoader.mgm.domain + mgFormLoader.mgm.post;
		//try {
			var request = new Ajax.Request(url, {
				method : 'get',
				parameters : mgArgs,
				onLoading : mgFormLoader.displayLoader,
				onComplete : mgFormLoader.handleResponse,
				evalJSON : false,
				evalJS : false,
				sanitiseJSON : true
			});
		//} catch (err) {
			//if (console) {console.log("SUBMIT error: "+err.toString());};
		//}
		return false;
	},
	isObjectInArray : function (obj, ary ){
		for (var i=0; i < ary.length; i++) {
			if (obj == ary[i]) {
				return true;
			}
		}
		return false;
	},
	displayError : function (elem) {
		if (typeof elem.name != 'undefined' && elem.name.indexOf('_yy') > 0 ) {
			if (elem.previousSibling && elem.previousSibling.previousSibling && elem.previousSibling.previousSibling.previousSibling){
				if (elem.previousSibling.previousSibling.previousSibling.helpText && "" != elem.previousSibling.previousSibling.previousSibling.helpText && "null" != elem.previousSibling.previousSibling.previousSibling.helpText)
				{
					//if (console) {console.log("changing innerHTML1 to: "+elem.previousSibling.previousSibling.previousSibling.helpText);};
					elem.previousSibling.previousSibling.previousSibling.innerHTML=elem.previousSibling.previousSibling.previousSibling.helpText;
				}
				elem.previousSibling.previousSibling.previousSibling.className += ' validate_labelError';
			}
			
		} else if (typeof elem.name != 'undefined' && elem.name.indexOf('_mm') > 0 ) {			
			if (elem.previousSibling && elem.previousSibling.previousSibling){
				if (elem.previousSibling.previousSibling.helpText && "" != elem.previousSibling.previousSibling.helpText && "null" != elem.previousSibling.previousSibling.helpText){
					//if (console) {console.log("changing innerHTML2 to: "+elem.previousSibling.previousSibling.previousSibling.previousSibling.helpText);};
					elem.previousSibling.previousSibling.innerHTML=elem.previousSibling.previousSibling.helpText;
				}
				elem.previousSibling.previousSibling.className += ' validate_labelError';
			}
			
		} else {
			if (elem.previousSibling){
				if (elem.previousSibling.helpText && "" != elem.previousSibling.helpText && "null" != elem.previousSibling.helpText){
					elem.previousSibling.innerHTML=elem.previousSibling.helpText;
					//if (console) {console.log("changing innerHTML3 to: "+elem.previousSibling.helpText);};
				}
				elem.previousSibling.className += ' validate_labelError';
			}						
		}
		elem.className += ' validate_fieldError';
	},
	removeError : function (elem) {
		if (typeof elem.name != 'undefined' && elem.name.indexOf('_yy') > 0 ) {
			//elem.previousSibling.previousSibling.previousSibling.innerHTML=elem.title;
			elem.previousSibling.previousSibling.previousSibling.className = elem.previousSibling.previousSibling.previousSibling.className.replace('validate_labelError','');
		} else if (typeof elem.name != 'undefined' && elem.name.indexOf('_mm') > 0 ) {
			//elem.previousSibling.previousSibling.innerHTML=elem.title;
			elem.previousSibling.previousSibling.className = elem.previousSibling.previousSibling.className.replace('validate_labelError','');
		} else if (elem.previousSibling) {
			//elem.previousSibling.innerHTML=elem.title;
			elem.previousSibling.className = elem.previousSibling.className.replace('validate_labelError','');
		}
		elem.className = elem.className.replace('validate_fieldError','');
	},
	validate : function() {
		//console.log("executing validate");
		showInlineError = false;
		doSubmitForm = false;
		var ucode = "\u005C\u002F\u00C0\u00C8\u00CC\u00D2\u00D9\u00E0\u00E8\u00EC\u00F2\u00F9\u00C1\u00C9\u00CD\u00D3\u00DA\u00DD\u00E1\u00E9\u00ED\u00F3\u00FA\u00FD\u00C2\u00CA\u00CE\u00D4\u00DB\u00E2\u00EA\u00EE\u00F4\u00FB\u00C3\u00D1\u00D5\u00E3\u00F1\u00F5\u00C4\u00CB\u00CF\u00D6\u00DC\u00E4\u00EB\u00EF\u00F6\u00FC\u00E7\u00C7\u00DF\u00D8\u00F8\u00C5\u00E5\u00C6\u00E6\u00DE\u00FE\u00D0\u00F0";
		rules = {
			"validate_number"	: new RegExp("^[\\d]*$","ig"),
			"validate_alpha"	: new RegExp("^[\\w\\s\'-"+ ucode +"]*$","ig"),
	 		"validate_alphanum"	: new RegExp("^[\\w\\d\\s\\t\\n£$+_\\.,;:\'\""+ ucode +"-]*$","ig"),
			"validate_decimal"	: new RegExp("^[\\d]*\\.?[\\d]*$","ig"),
			"validate_notnull"	: new RegExp(".+","ig"),
			"validate_telephone" : new RegExp("^$|(?!.*([0-9])\\1{4,11})(?!.*(12345|23456|34567|45678|56789|67890|09876|98765|87654|76543|65432|54321))(^(01)[0-9]{8,9}|^(?=^(020|023|024|028|029|070|074|075|07624|077|078|079|030|033|034|037|055|056))[0-9]{11})$"),
			"validate_email"	: new RegExp("^([0-9a-zA-Z]+[\\._+&-])*[0-9a-zA-Z\\._+&-]+@([0-9a-zA-Z-]{2,}[\\.])+[a-zA-Z]{2,6}$","ig"),
	 		"validate_password"	: new RegExp("^[\\w\\d_\\.-]{6,18}$","ig"),
			"validate_postcode"	: new RegExp("^[ ]*(BFPO[ c\\/o]?[ ]?[0-9]{1,4}|GIR[ ]?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])[ ]*[0-9][ABD-HJLNP-UW-Z]{2})[ ]*$","ig")
		};
		var f = document.getElementById('formElem');
		var showFinalAlert = false;
        var inputsI = f.getElementsByTagName("input");
        var inputsS = f.getElementsByTagName("select");
        var inputsT = f.getElementsByTagName("textarea");
        var inputs = Array();
        var checkedInputNames = Array();
        var uncheckedInputNames = Array();
        for(var i=0; i<inputsI.length; i++) {
            if (inputsI[i].type == "hidden") {
            	if (inputsI[i].value !="") {
            		inputs.push(inputsI[i]);
            	}
            } else if((inputsI[i].type != "radio" && inputsI[i].type != "checkbox")) {
       			inputs.push(inputsI[i]);
            } else if ( (inputsI[i].type == "radio" || inputsI[i].type == "checkbox")) {
            	if ( inputsI[i].checked ){
            		checkedInputNames.push(inputsI[i].name);
            	}
            	inputs.push(inputsI[i]);
            }
        }
		for(var i=0; i<inputsS.length; i++) {
			inputs.push(inputsS[i]);
		}
		for(var i=0; i<inputsT.length; i++) {
			inputs.push(inputsT[i]);
		}
        
	    //try{
			for (y in inputs){
				if (inputs[y] && inputs[y].type != null && (inputs[y].type == "text" || inputs[y].type == "textarea" || inputs[y].type == "password" || inputs[y].type == "checkbox" || inputs[y].type == "radio" || inputs[y].type.indexOf("select") >= 0 ) ) {
					if (inputs[y].className.search(RegExp("\\bvalidate_telephone\\b")) >=0){
						inputs[y].value = inputs[y].value.replace(/[\s-\(\)]/g,"").replace(/\+44[0]{0,1}/,"0");
					}
					if (inputs[y].className.search(RegExp("\\bvalidate_email\\b")) >=0){
						var msg=document.getElementById("emailV");
					    if(msg!=null&&msg.innerHTML.indexOf("EMAIL INVALID")>=0){
							mgFormLoader.displayError(inputs[y]);
							showFinalAlert = true;
							break;
							
					    }
					    else{
					    	inputs[y].value = inputs[y].value.replace(" ","");
					    }					   
					}
					
								
					for (x in rules) {
						if ( (inputs[y].type == 'text' || inputs[y].type == "textarea" || inputs[y].type == 'password') && typeof inputs[y].className != 'undefined' && inputs[y].className.search(RegExp("\\b"+x+"\\b")) >=0 && inputs[y].value.search(rules[x]) < 0) {
							mgFormLoader.displayError(inputs[y]);
							showFinalAlert = true;
							break;
						} else if ( (inputs[y].type == 'checkbox' || inputs[y].type == 'radio' ) && typeof inputs[y].className != 'undefined' && inputs[y].className == 'validate_notnull' && !inputs[y].checked && !mgFormLoader.isObjectInArray(inputs[y].name,checkedInputNames)) {
							mgFormLoader.displayError(inputs[y].parentNode);
							showFinalAlert = true;
							break;
						} else if ( inputs[y].type.indexOf('select') >=0 && (inputs[y].selectedIndex < 0 || inputs[y].options[inputs[y].selectedIndex].value == "") && typeof inputs[y].className != 'undefined' && inputs[y].className.search(RegExp("\\b"+x+"\\b")) >=0 ) {
							mgFormLoader.displayError(inputs[y]);
							showFinalAlert = true;
							break;
						} else if (typeof inputs[y].className != 'undefined' && inputs[y].className.indexOf("validate_fieldError") > 0 ) {
							mgFormLoader.removeError(inputs[y]);
						} else if (typeof inputs[y].parentNode.className != 'undefined' && inputs[y].parentNode.className.indexOf("validate_fieldError") > 0 ) {
							mgFormLoader.removeError(inputs[y].parentNode);
						}
	
					}
		    	}
				if ((""+inputs[y].id).indexOf("_hasLookedUp") >= 0){
					if (inputs[y].value.indexOf("true")<0){
						
						var q =  (""+inputs[y].id).substring(0,(""+inputs[y].id).indexOf("_hasLookedUp"))
						mgFormLoader.displayError(document.getElementById( q + "_userPostcode"));
						mgFormLoader.displayError(document.getElementById( q + "_userAddress"));							
						showFinalAlert = true;
					}
				}	
			}
			
			
		//} catch(err) {
		//	if(console) {console.log("Validate Error:"+err.toString());};
			//return false;
		//}
		if (showFinalAlert == true){
			//alert(mgFormLoader.alertMessage);
			return false;
		}
		else{
			return true;
		}
	},
	load : function(_mgm) {
		try {
			window.onerror = mgFormLoader.reportError;
		} catch(err){
		}
		mgFormLoader.mgm = _mgm;
        mgFormLoader.protoScript = document.createElement("script");
        mgFormLoader.protoScript.type = "text/javascript";
        mgFormLoader.protoScript.src = mgFormLoader.mgm.domain + "/script/prototype/1.7.0.0/prototype.js";
        document.getElementsByTagName("head")[0].appendChild(mgFormLoader.protoScript);
       
        if (mgFormLoader.mgm.domain == null || mgFormLoader.mgm.ad == null || mgFormLoader.mgm.site == null || mgFormLoader.mgm.layout == null) {
			document.write("Bad configuration. Please ensure the domain, ad, site and layout variables are correct.");
        } else {
			var url = mgFormLoader.mgm.domain + "/script/mg_form.js.jsp"
			+ "?ad_id=" + mgFormLoader.mgm.ad
			+ "&site_id=" +mgFormLoader.mgm.site
			+ "&layout_id=" +mgFormLoader.mgm.layout
			+ "&cb=" +mgFormLoader.mgm.cb
			+ (_mgm.fromLayoutType ? "&fromLayoutType=" + _mgm.fromLayoutType: "")
			+ (_mgm.fromLayout ? "&fromLayout=" + _mgm.fromLayout: "")
			+ (_mgm.basketAd ? "&fromBasketAd=" + _mgm.basketAd: "")
			+ (_mgm.publisherSource ? "&source=" + _mgm.publisherSource: "")
			+ (_mgm.publisherSourceData ? "&sourceData=" + _mgm.publisherSourceData: "")
			+ (_mgm.publisherSourceAffiliateId ? "&sourceAffiliateId=" + _mgm.publisherSourceAffiliateId: "")
			+ (_mgm.lead ? "&lead=" + escape(_mgm.lead): "");
			document.write("<" + "script type=\"text/javascript\" src=\"" + url + "\"" + "><" + "/script" + ">");
			  
        }
     
	},
	isEmail: function() {
		var f = document.getElementById('formElem');
		if(f!=null&&f.getElementsByTagName('input')!=null){ 
		    var inputsI = f.getElementsByTagName("input");
		    var value="";
		    if(this.value!=null){
		    	value=this.value;
		    }
		    else{
			    for(y in inputsI){
			    	if (inputsI[y] && inputsI[y].type != null && (inputsI[y].type == "text" || inputsI[y].type == "textarea") ) {
			    		if (inputsI[y].className.search(RegExp("\\bvalidate_email\\b")) >=0){	
			    			value=inputsI[y].value;
			    		}
			    	}
			    	if (value.search(/^([0-9a-zA-Z]+[-\\._+&])*[0-9a-zA-Z-\\._+&]+@([-0-9a-zA-Z]{2,}[\\.])+[a-zA-Z]{2,6}$/) == -1){
			    		document.getElementById('errorMessage').innerHTML="<div id ='emailV' class='bp_invalid'>EMAIL INVALID</div>";
			    		mgFormLoader.lastEmailCalled=value;
					}
			    	else{
						if(mgFormLoader.lastEmailCalled.toLowerCase()!=value.toLowerCase()){
							 var url = '/emailvalidation.jsp';
								var pars = 'email='+value;
								mgFormLoader.lastEmailCalled=value;
								var myAjax = new Ajax.Updater(
											{success: 'errorMessage'}, 
											url, 
											{
												method: 'get', 
												parameters: pars, 
												onFailure:mgFormLoader.reportEmailError
											});
						}
					}
			    }
		    }
		}
	},
	getHTML :	function() {
		window.clearTimeout(mgFormLoader.timer);
		mgFormLoader.timer=window.setTimeout(mgFormLoader.isEmail,1000); 
	},
	initNokiaCaptcha :	function() {
		window.clearTimeout(mgFormLoader.timer);
		if(typeof Ajax == 'undefined') {
			//if (console) console.log('prototype not ready, waiting...');
			mgFormLoader.timer=window.setTimeout(mgFormLoader.initNokiaCaptcha,1000); 
			return;
		}
		var url = mgFormLoader.mgm.domain+'/script/ovi_proxy.jsp';
		var request = new Ajax.Request(url, {
			method : 'get',
			onComplete: mgFormLoader.writeNokiaCaptcha,
			evalJSON : true,
			evalJS : false,
			sanitiseJSON : true
		});
	},
	writeNokiaCaptcha :	function(request) {
		//if (console) console.log('captcha_id='+request.responseJSON.captchaid);
		var srcUrl = mgFormLoader.mgm.domain+'/script/ovi_proxy.jsp?captchaId=';
		
		var sw = document.getElementById('submitWrap');
		var nokiaWrapper = document.createElement('div');
		nokiaWrapper.style.margin='5px 0 0 0';
        var label = document.createElement('label');
        label.htmlFor = 'captcha_ans';
        label.style.display='inline-block';
        label.style.width='48%';
        label.style.marginRight='5px';
        label.style.textAlign='left';
        var cap = document.createElement('img');
        cap.style.display='inline-block';
        cap.src = srcUrl + request.responseJSON.captchaid; 
        cap.style.width='90%';
        cap.style.marginRight='5px';
        label.appendChild(cap);
        var answerWrap = document.createElement('div');
        answerWrap.style.display='inline-block';
        answerWrap.style.width='48%';
        var capAns = document.createElement('span');
        capAns.innerHTML='Captcha answer:*';
        var answer1 = document.createElement('input');
        answer1.id = 'captcha_id';
        answer1.name = 'captcha_id';
        answer1.type='hidden';
        answer1.value=request.responseJSON.captchaid;
        var answer2 = document.createElement('input');
        answer2.id = 'captcha_ans';
        answer2.name = 'captcha_ans';
        answer2.type='text';
        answer2.style.width='100%';
        answer2.style.height='13px';
        answer2.style.border='1px solid #CFCFCF';
        answer2.style.padding='2px';
        answer2.title='';
        answer2.className='validate_notnull';
        nokiaWrapper.appendChild(label);
        answerWrap.appendChild(capAns);
        answerWrap.appendChild(answer2);
        nokiaWrapper.appendChild(answerWrap);
        nokiaWrapper.appendChild(answer1);
        sw.parentNode.insertBefore(nokiaWrapper,sw);
	},
	prepareInputsForHints: 	function () {
		var f = document.getElementById('formElem');
		if(f!=null){
		if(f.getElementsByTagName('input')!=null){
		  var inputs = f.getElementsByTagName("input");
		 
		  for (var i=0; i<inputs.length; i++){
			  if (inputs[i].type == "checkbox" || inputs[i].type == "radio"){
					inputs[i].onmouseover = function () {
				    	if(this.parentNode.parentNode.getElementsByTagName("span")[0]!=null){
				    	 this.parentNode.parentNode.getElementsByTagName("span")[0].style.display = "inline";
				    	}
				    }
				    inputs[i].onmouseout = function () {
				    	if(this.parentNode.parentNode.getElementsByTagName("span")[0]!=null){
				    		this.parentNode.parentNode.getElementsByTagName("span")[0].style.display = "none";
				    	}
				    }
			  } else {
					inputs[i].onmouseover = function () {
				    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
				    	 this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
				    	}
				    }
				    inputs[i].onmouseout = function () {
				    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
				    		this.parentNode.getElementsByTagName("span")[0].style.display = "none";
				    	}
				    }
			  }
		  }
		  if(f.getElementsByTagName('select')!=null){
			  var selects = f.getElementsByTagName("select");
			  for (var k=0; k<selects.length; k++){
			    selects[k].onmouseover = function () {
			    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
			      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";}
			    }
			    selects[k].onmouseout = function () {
			    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
			    this.parentNode.getElementsByTagName("span")[0].style.display = "none";}
			    }
			  }
			}
		
		if(f.getElementsByTagName('textarea')!=null){
		  var texts=f.getElementsByTagName("textarea");
		  for (var z=0; z<texts.length; z++){
			    texts[z].onfocus = function () {
			    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
			      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";}
			    }
			    texts[z].onblur = function () {
			    	if(this.parentNode.getElementsByTagName("span")[0]!=null){
			      this.parentNode.getElementsByTagName("span")[0].style.display = "none";}
			    }
			  }
		  }
		}
		}
	},
	reportEmailError  : function(request) {
		reportError("email dns check failed",top.location.href,"0");
	},
	reportError : function(msg, url, linenumber) {
		var myFrame = document.createElement('iframe');
		myFrame.src = "";
		myFrame.height = '0px';
		myFrame.width = '0px';
		myFrame.style.border = 'none';
		var body="msg: "+msg+" location: "+url+" linenumber: "+linenumber;
		myFrame.src = encodeURI( mgFormLoader.mgm.domain + "/inbanner/errorMail.jsp?subject=JavaScript&msg="+msg+"&location="+url+"&linenumber="+linenumber);
		document.body.appendChild(myFrame);
		var theDiv = document.createElement('div');
		theDiv.style.cssText="font-family:arial;font-size:18px;border-bottom:1px solid #FFFFFF;background-color:#465D72;color:#FFFFFF;font-weight:bold;width:100%;text-align:center;height:40px;position:absolute;top:0px;left:0px;line-height:36px;box-shadow:#999 5px 5px 10px;-webkit-box-shadow:#999 5px 5px 10px;-moz-box-shadow:#999 5px 5px 10px;";
		theDiv.innerHTML = "Something went wrong!";
	    document.body.appendChild(theDiv);
	}
};

