// DMK scripts
var dmk = dmk || {};




dmk.formRules = {};

// basic private definitions, modification should be reflected in FieldChecks.java
dmk.formRules._df                    = {};
dmk.formRules._df.specChars          = " \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~\xA1-\xBF\xD7\xF7";
dmk.formRules._df.alphaLowercase     = "a-z";
dmk.formRules._df.alphaUppercase     = "A-Z";
dmk.formRules._df.alpha              = dmk.formRules._df.alphaLowercase + dmk.formRules._df.alphaUppercase;
dmk.formRules._df.numeric            = "0-9";
dmk.formRules._df.alphaNum           = dmk.formRules._df.numeric + dmk.formRules._df.alpha;
dmk.formRules._df.alphaLowercaseISO  = dmk.formRules._df.alphaLowercase + dmk.formRules._df.alphaUppercase + "\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF";
dmk.formRules._df.alphaUppercaseISO  = "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDE";
dmk.formRules._df.alphaISO           = dmk.formRules._df.alphaLowercaseISO + dmk.formRules._df.alphaUppercaseISO;
dmk.formRules._df.alphaNumISO        = dmk.formRules._df.numeric + dmk.formRules._df.alphaISO;
dmk.formRules._df.alphaLowercaseUTF  = "\u00E1\u00E9\u0115\u00ED\u00F3\u00FA\u016F\u00FD\u017E\u0161\u010D\u0159\u010F\u0165\u0148" + dmk.formRules._df.alphaLowercase;
dmk.formRules._df.alphaUppercaseUTF  = "\u00C1\u00C9\u0114\u00CD\u00D3\u00DA\u016E\u00DD\u0160\u017D\u010c\u0158\u010E\u0164\u0147" + dmk.formRules._df.alphaUppercase;
dmk.formRules._df.alphaUTF           = dmk.formRules._df.alphaLowercaseUTF + dmk.formRules._df.alphaUppercaseUTF;
dmk.formRules._df.alphaNumUTF        = dmk.formRules._df.numeric + dmk.formRules._df.alphaUTF;

// should accept IDN domain names
dmk.formRules._df.urlDomain          = "([^"+dmk.formRules._df.specChars+"]+([-_.]?[^"+dmk.formRules._df.specChars+"]){1,}[.]([a-zA-Z]){2,4})";
dmk.formRules._df.urlIp              = "((([0-9]){1,3}\.){3}([0-9]){1,3})";
dmk.formRules._df.urlPath            = "(/([^ \t\n\r\f/])*)*";
dmk.formRules._df.urlGet             = "([\?]{1}[^ \t\n\r\f]*)?";
dmk.formRules._df.urlFragment        = "([\#]{1}([;/?:@&=+$,\-_.!~*'()a-zA-Z0-9]|(%[0-9a-fA-F]{2}))*)?";

dmk.formRules.email = {
	cls: "email",
	reg: new RegExp("^([a-zA-Z0-9]+[a-zA-Z0-9\._-]*[a-zA-Z0-9]+@" + dmk.formRules._df.urlDomain + ")?$"),
	err: "Field {label} must contain a valid e-mail address."
};
dmk.formRules.safeChars = {
	cls: "safeChars",
	reg: new RegExp("^[0-9a-zA-Z_]{0,}$"),
	err: "Field {label} must contain only safe characters."
};
dmk.formRules.color = {
	cls: "color",
	reg: new RegExp("^([#]{1}[0-9a-fA-F]{6})?$"),
	err: "Field {label} must contain hexadecimal RGB color definition (for example #336699)."
};
dmk.formRules.url = {
	cls: "url",
	reg: new RegExp("^((http(s)?://(("+dmk.formRules._df.urlDomain+")|("+dmk.formRules._df.urlIp+"))){1}(:[0-9]{2,5})?("+dmk.formRules._df.urlPath+")("+dmk.formRules._df.urlGet+")("+dmk.formRules._df.urlFragment+"))?$"),
	def: "http://",
	err: "Field {label} must contain valid URL (for example \"http://www.google.com\")."
};
dmk.formRules.domainUrl = {
	cls: "domainUrl",
	reg: new RegExp("^(http(s)?://"+dmk.formRules._df.urlDomain+")?$"),
	def: "http://",
	err: "Field {label} must contain valid domain name."
};
dmk.formRules.phone = {
	cls: "phone",
	reg: new RegExp("^[0-9()+-/ ]{0,}$"),
	err: "Field {label} must contain a valid phone number."
};
/*
dmk.formRules.required = {
	cls: "required",
	fn:
		function(str) {
			return (str.search(/\S/) < 0) ? false : true;
		},
	err: "Field {label} must not be empty."
};
*/




dmk.ePrani = {
	name: "dmk.ePrani",
	
	init: function() {
		var divs;
		var i, l;
		
		dmk.ePrani.addressForm.init();
		
		if ((typeof lib.form != "undefined") && dmk && dmk.formRules) {
			lib.form.init(dmk.formRules);
		}
		lib.mouse.init(); // track the mouse position
//		dmk.ePrani.menu.init();
		
		// add MSIE hover support to menu
		var menuL1 = lib.elm.get("menuL1");
		if (menuL1) {
			divs = lib.elm.getByTag("div", menuL1);
			for (i = 0, l = divs.length; i < l; i++) {
				lib.mouse.hover.add(divs[i]);
			}
		}
		
		return true;
	}
};




dmk.ePrani.processBar = {
	name:     "dmk.ePrani.processBar",
	next:     { link: { id: "pbNextTopLink" } },
	previous: { link: { id: "pbPreviousTopLink" } },
	address:  { link: { id: "pbAddressLink" } },
	cart:     { link: { id: "pbCartLink" } },
	payment:  { link: { id: "pbPaymentLink" } },
	end:      { link: { id: "pbEndLink" } }
};




dmk.ePrani.addressForm = {
	name: "dmk.ePrani.addressForm",
	id: "addressForm",
	
	init: function () {
		var addressForm = lib.elm.get(dmk.ePrani.addressForm.id);
		var pbEndLink, pbNextLink;
		
		var submitForm = function (lnk, e) {
			var addrForm = lib.elm.get(dmk.ePrani.addressForm.id);
			if (form.redirectUrl && lnk.href) {
				lib.elm.setValue(form.redirectUrl, lnk.href);
			}
			lib.form.submit(addrForm);
			lib.evt.cancel(e);
			return true;
		};
		
		return true;
	}
};


