(function($) {

	$.fn.linkFactory = function(options) {

		var settings = {
			'SLASH' : '/',
			'NAME_SPACE_SEPARATOR' : '://',
			'THIRD_LEVEL_DOMAIN' : 'www.',
			'loginTwoDomains' : '',
			'loginThreeDomains' : '',
			'loginTwoQueryString' : '',
			'loginThreeQueryString' : '',
			'username' : '',
			'password' : ''
		};

		var createUrl = function(url, queryString, protocol, thirdLevelDomain) {
			var concatChar = '?';
			if (url.indexOf('?') != -1) {
				concatChar = '&';
			}
			url = url + concatChar + queryString;

			return protocol + thirdLevelDomain + url;
		};

		return this.each(function() {

			var url = ($(this).attr('href')) ? $(this).attr('href') : '';
			var protocol = '';
			var thirdLevelDomain = '';
			if (url.indexOf(settings['NAME_SPACE_SEPARATOR']) != -1) {
				var protocolEndIndex = url
						.indexOf(settings['NAME_SPACE_SEPARATOR']) + 3;
				protocol = url.substring(0, protocolEndIndex);
				url = url.substring(protocol.length);
			}

			if (url.indexOf(settings['THIRD_LEVEL_DOMAIN']) != -1) {
				thirdLevelDomain = settings['THIRD_LEVEL_DOMAIN'];
				url = url.substring(4);
			}

			if (url.lastIndexOf(settings['SLASH']) == url.length - 1) {
				url = url.substring(0, url.length - 1);
			}

			var serverName = url;
			if (url.indexOf(settings['SLASH']) != -1) {
				serverName = url
						.substring(0, url.indexOf(settings['SLASH']) - 1);
			}

			if (serverName.length > 0) {
				var newUrl;
				if (options['loginTwoDomains'].indexOf(serverName) != -1) {
					
					newUrl = createUrl(url, options['loginTwoQueryString'],
							protocol, thirdLevelDomain);
				} else if (options['loginThreeDomains'].indexOf(serverName) != -1) {
					
					newUrl = createUrl(url, options['loginThreeQueryString'],
							protocol, thirdLevelDomain);
				}
				
				if(options['loginTwoDomains'].indexOf(serverName) != -1 || options['loginThreeDomains'].indexOf(serverName) != -1)
					{
						$(this).attr('href', "javascript:void(0);");
					    if((this).className.indexOf('linkesterno') != -1)
					    {
					    	$('#sso').attr('target',"_blank");
					    }else{
					    	$('#sso').attr('target',"");
					    }
						$(this).click(function(){
							$('#sso').attr('action', protocol + thirdLevelDomain + url);
							$('#ssoUsername').val(options['username']);
							$('#ssoPassword').val(options['password']);
							$('#ssoUsernameMgnl').val(options['username']);
							$('#ssoPasswordMgnl').val(options['password']);
							$('#sso').submit();
							//submit
							return false;		
						});
					}
			}
			
		});
		
	};

})(jQuery);

