/* Ajax Formular*/

var QLIKFORM_LOADER = {
	require: function(libraryName) {
		document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
	},
	load: function() {
		if(Prototype) {
			$A(document.getElementsByTagName("script")).findAll( 
				function(s) {
					return (s.src && s.src.match(/formular\.js(\?.*)?$/));
				}
			).each(
				function(s) {
					var includes = s.src.match(/\?.*modules=([a-z,]*)/);
					(includes ? includes[1] : '').split(',').each(
						function(include) { 
							var sPath = '';
							switch (include) {
								case 'editor' : sPath = '/js/editor/tiny_mce/tiny_mce.js'; break;
								default: break;
							}
							if (sPath !== '') QLIKFORM_LOADER.require(sPath) 
						}
					);
				}
			);
		}
	}
}

QLIKFORM_LOADER.load();

var QLIKFORM = {
	isInitialized : false
	, show : function(parameters) { QLIKFORM.init(); QLIKFORM.setSize(parameters); QLIKOVERLAY.show(); $('elQLIKFORM').show(); return false; }
	, hide : function(e) { if (e) { e.stop(); } if (QLIKOVERLAY) { QLIKOVERLAY.hide(); } if ($('elQLIKFORM')) { $('elQLIKFORM').hide(); } return false; }
	, init : function() {
		if (QLIKFORM.isInitialized !== true || !$$('#elQLIKFORM table.popupForm')[0]) {
			QLIKOVERLAY.init();
			var b = $$("body")[0] || document.documentElement;
			if (b) { b.insert('<div align="center" id="elQLIKFORM" style="display:none;"><table border="0" align="center" cellpadding="0" cellspacing="0" class="popupForm leftCorner"><tr><td align="right"><a href="#" id="lnkQLIKFORMHide"><img src="/images/closelabel2.gif" width="66" height="22" border="0" hspace="10" vspace="10" /></a></td></tr><tr><td valign="top"><div id="elQLIKFORMContent" style="text-align:left"></div></td></tr></table></div>'); }
			Event.observe($("lnkQLIKFORMHide"), "click", QLIKFORM.hide);
			QLIKFORM.isInitialized = true;
		}
	}
	, setSize : function(parameters) { 
		if (!parameters) { parameters = {}; } 
		$$('#elQLIKFORM table.popupForm')[0].setStyle({
			width:(parameters.width ? parameters.width + (!isNaN(parameters.width) ? 'px' : '') : 'auto') 
			, height:(parameters.height ? parameters.height + (!isNaN(parameters.height) ? 'px' : '') : 'auto') 
		});
	}
	, loadJavaScript : function(Id, url) {
		new Ajax.Request(url, { method:'get', asynchronous:false, onSuccess : QLIKFORM.insertJavaScript, internalParameters : {url: url, id : Id} });
	}
	, insertJavaScript : function(r) {
		var sContent = r.responseText;
		var parameters = r.request.options.internalParameters;
		
		if (!$(parameters.id)) {
			var oHead = document.getElementsByTagName('HEAD').item(0);
			var oScript = document.createElement( "script" );
			oScript.language = "javascript";
			oScript.type = "text/javascript";
			oScript.id = parameters.id;
			oScript.defer = true;
			oScript.text = sContent;
			oHead.appendChild( oScript );
		}
	}
	, displayHTML : function (r) {
		var sContent = r.responseText;
		var parameters = r.request.options.internalParameters;
		sContent.evalScripts();
		QLIKMSG.hide();
		QLIKFORM.show({ width: parameters.width, height:parameters.height });
		$('elQLIKFORMContent').innerHTML = sContent;
		QLIKUTILS.centerVertical($('elQLIKFORM'));
		if (initSnippet) { initSnippet(); }
		return false;
	}
	, showDialog : function(fnName, parameters) {
		//QLIKFORM.hide();
		parameters = parameters || {};
		switch (fnName) {
			case 'modifyCompanyData' : return QLIKFORM.showModifyCompanyData(parameters);
			case 'getCommentar' : return QLIKFORM.showGetCommentar(parameters);
			case 'SeoInfo' : return QLIKFORM.showSeoInfo(parameters);
			case 'contactUser' : return QLIKFORM.showContactUser(parameters);
			case 'CreateAccount' : return QLIKFORM.showCreateAccount(parameters);
			case 'contactCompany' : return QLIKFORM.showContactCompany(parameters);
			case 'sendToFriend' : return QLIKFORM.showSendToFriend(parameters);
			case 'contactCompanyDirect' : return QLIKFORM.showContactCompanyDirect(parameters);
			case 'RedactionTipps' : return QLIKFORM.showRedactionTipps(parameters); 
			case 'productOrder' : return QLIKFORM.showProductOrder(parameters);
			case 'request4Ad' : return QLIKFORM.showRequest4Ad(parameters);
			case 'Mailtosupport' : return QLIKFORM.showMailtosupport(parameters);
			case 'Request4Pos1' : return QLIKFORM.showRequest4Pos(parameters, 1); 
			case 'Request4Pos2' : return QLIKFORM.showRequest4Pos(parameters, 2); 
			case 'Request4Pos3' : return QLIKFORM.showRequest4Pos(parameters, 3); 
			case 'Request4Pos4' : return QLIKFORM.showRequest4Pos(parameters, 4); 
			case 'Request4Pos5' : return QLIKFORM.showRequest4Pos(parameters, 5); 
			default : return false;
		}	
	}
	, _showDialog : function (parameters) {
		QLIKMSG.Wait(parameters.waitMsg);
		/* if (parameters.loadJS && parameters.loadJS !== '') {
			switch (parameters.loadJS) {
				case 'editor' : 
					QLIKFORM.loadJavaScript('scr_editor', '/js/editor/tiny_mce/tiny_mce.js');
					break;	
			}	
		}*/
		new Ajax.Request(parameters.url, { method: (parameters.method || 'get'), onSuccess : QLIKFORM.displayHTML, internalParameters : parameters });
		return false;
	}
	, showSeoInfo : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/seo-info.asp?InfoID=" + pageConfig.ii + "&fn=" + pageConfig.fn + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url : url, width:742, height:890, waitMsg:parameters.waitMsg });
	}
	, showModifyCompanyData : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/change-company-data.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url : url, width:780, height:800, waitMsg:parameters.waitMsg, loadJS : 'editor' });
	}
	, showGetCommentar : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/getCommentar.asp?InfoID=" + pageConfig.ii + "&cName=" + encodeURIComponent(pageConfig.cName) + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url : url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}

	, showContactUser : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/contact-User.asp?InfoID=" + pageConfig.ii + "&cguid=" + pageConfig.sc + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	
	, showCreateAccount : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/CreateAccountContactForm.asp?InfoID=" + pageConfig.ii + "&cguid=" + pageConfig.sc + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	
	
	, showSendToFriend : function(parameters) {
		parameters = parameters || {};
	var url ="/include/snippets/sendToFriend.asp?InfoID=" + pageConfig.ii + "&prTitle=" + encodeURIComponent(pageConfig.ProductItem) + "&PUrl="+ encodeURIComponent(pageConfig.ProductUrl)+"&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showContactCompany : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/contact-company.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showContactCompanyDirect : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/contact-company-direct.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showRedactionTipps : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/showRedactionTipps.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showRequest4Ad : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/requestOfAd.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showMailtosupport : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/mailtosupport.asp?InfoID=" + pageConfig.ii + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showRequest4Pos : function(parameters, topPos) {
		parameters = parameters || {};
		var url ="/include/snippets/requestOfPos.asp?InfoID=" + pageConfig.ii + "&branchId=" + pageConfig.branchId + "&regionId=" + pageConfig.regionId + "&param=" + topPos + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
	, showProductOrder : function(parameters) {
		parameters = parameters || {};
		var url ="/include/snippets/order.asp?InfoID=" + pageConfig.ii + "&prTitle=" + encodeURIComponent(pageConfig.ProductItem) + "&t="+ (new Date()).getTime();
		return QLIKFORM._showDialog({ url: url, width:500, height:'auto', waitMsg:parameters.waitMsg });
	}
};

var QLIKFORMCHECK = {
	checkForm : function (frm, msgTemplate) {
		var elList = frm.getElements();
		var retVal = true;
		var returnMsg = [];
		var i;
		for (i = 0; i < elList.length; i++) { retVal = retVal & QLIKFORMCHECK.checkSingleFormElement(elList[i], returnMsg); }
		if (returnMsg.length > 0) {
			if (!msgTemplate) { msgTemplate = '<tr><td width="10%">&rArr; </td><td align="left">[MSG]</td><td width="10%"></td></tr>'; }
			var msg = "";
			for (i = 0; i < returnMsg.length; i++) { msg += msgTemplate.replace(/\[MSG\]/gi, returnMsg[i]); }
			QLIKMSG.Alert((frm.getAttribute("errTitle") !== null ? frm.getAttribute("errTitle") : ""), (frm.getAttribute("errMsg") !== null ? frm.getAttribute("errMsg") + "<br /><br />" : "") + (msg !== "" ? "<table>" + msg + "</table>" : ""));
		}
		return retVal;
	}
	, checkSingleFormElement : function(el, returnMsg, dependent) {
		var retVal = true;
		var errRegEx = el.getAttribute("errRegEx");

		if (errRegEx !== null) {
			var re = new RegExp(errRegEx, "g" + (el.getAttribute("errRegExCase") !== null ? el.getAttribute("errRegExCase")  : ""));
			retVal = re.test(el.getValue());
			
			if (dependent !== true) {
				var errOrFld = el.getAttribute("errOrFld");
				if (errOrFld !== null) {
					var elOrFldList = errOrFld.split(',');
					for (var i = 0; i < elOrFldList.length; i++) { retVal = retVal || QLIKFORMCHECK.checkSingleFormElement($(elOrFldList[i]), returnMsg, true); }
				}
			}
			
			if (retVal === false) {
				if (el.getAttribute("errCSSClass") !== null) { el.addClassName(el.getAttribute("errCSSClass")); }
				if (el.getAttribute("errEl") !== null) { $(el.getAttribute("errEl")).show(); }
				if (dependent !== true) { if (el.getAttribute("errMsg") !== null) { returnMsg.push(el.getAttribute("errMsg")); } }
			}
			else {
				if (el.getAttribute("errCSSClass") !== null) { el.removeClassName(el.getAttribute("errCSSClass")); }
				if (el.getAttribute("errEl") !== null) { $(el.getAttribute("errEl")).hide(); }
			}
		}
		return retVal;
	}
	, checkElementMaxChars : function(el, maxChars, targetEl, template) {
		template = template || '[NUMCHARS] chars left.';
		if (el && el.value) {
			targetEl.innerHTML = template.replace(/\[NUMCHARS\]/, (maxChars - el.value.length))
			if (el.value.length > maxChars) el.value = el.value.substr(0, maxChars);
		}
		return true;
	}
};

