
var widthAuthWindow = 350;

var authBlocksSuffix = {
    TAB : '_tab',
    BLOCK : '_block',
    FIELD : '',
    ERROR : '_blockError'
};

var openIdDefValue = {
    LJ : 'Имя пользователя',
    CUSTOM_OPENID : 'Аккаунт на OpenID'
};

function Authorization() {
    this.authorizationWindowsOpening = false;
    this.isInCenter = false;
    this.options = null;
    this.helpBlock = '';
	this.dialogHolder = null;
}

Authorization.prototype.open = function(ev, errorMsg, authType) {
    if (null != this.dialogHolder) {
        removeQuickCreateDialog();
        makeDefaultLinkButtons();
        (function($) {
            $(document).ready(function(){
                $('.post .actions .iconComment').css("visibility", "visible");
                $('.comment .actions .iconComment').css("visibility", "visible");
            });
        })(jQuery);
    }
    modalPanel.setMouseCoordFromEvenet(ev);

    if (!this.authorizationWindowsOpening) {
        this.authorizationWindowsOpening = true;
		var cookieAuthType = getCookie('authType');
		if (!authType && cookieAuthType && '' != cookieAuthType) {
			authType = cookieAuthType;
		}

		this.options = new AuthOptions(authType);

        if (ev && !this.isInCenter) {
            this.isInCenter = false;
            AuthDwr.getAuthorizationPopup(function (popupHtml) {
                modalPanel.add(null, popupHtml, widthAuthWindow, false, true);
				authorization.changeAuthType(authType);                
            });
        } else {
            this.isInCenter = true;
            if (errorMsg && errorMsg.length) {
                AuthDwr.getAuthorizationPopup(function(popupHtml) {
                    modalPanel.add(null, popupHtml, widthAuthWindow, true, true);
                    authorization.changeAuthType(authType);
                    authorization.setError(authType, errorMsg);
                });
            } else {
                AuthDwr.getAuthorizationPopup(function(popupHtml) {
                    modalPanel.add(null, popupHtml, widthAuthWindow, true, true);
					authorization.changeAuthType(authType);
                    if(!!window.opera){
                        if(authType){
                            authType = "'" + authType + "'";
                        }
                        setTimeout("authorization.changeAuthType(" + authType + ")", 100);
                    }
                });
            }
        }
        document.onkeypress = this.keyListener;        
    }
};

Authorization.prototype.close = function() {
    this.authorizationWindowsOpening = false;
    this.isInCenter = false;
    document.onkeypress = '';
    modalPanel.close();
};

Authorization.prototype.onLogin = function() {
    var authType = ('none' != document.getElementById('login_block').style.display);
    var remember = document.getElementById('remember').checked;
	if (authType) {
        var login = document.getElementById('login').value;
        var password = document.getElementById('password').value;

		AuthDwr.authorization(login, password, remember, callbackLogin);
    } else {
        var openId;
        if (document.getElementById(this.options.field).value == openIdDefValue.LJ
                || document.getElementById(this.options.field).value == openIdDefValue.CUSTOM_OPENID) {
            openId = '';
        } else {
            openId = document.getElementById(this.options.field).value;
        }

        var type = document.getElementById('authType').value;

        AuthDwr.validateAuthorizationByOpenId(openId, type, callbackOpenID);
    }
};

//TODO delete prefix when registration will be dynamic modal window
Authorization.prototype.postOpenIdLoginForm = function() {
    var loginForm = document.getElementById('loginForm');
    if (loginForm) {
        var openIdAuthServer = document.getElementById('openIdAuthServer');
        if (openIdAuthServer) {
            loginForm.action = openIdAuthServer.value;
        }
        document.getElementById('openIdUrl').value = document.getElementById(this.options.type).value;
        document.getElementById('returnPathAuth').value = document.location.href;
        loginForm.onsubmit = function() {
            return true;
        };
        loginForm.submit();
    }
};

Authorization.prototype.changeAuthType = function(authType) {
	var userName = '';
	var userNameField;
    this.options = new AuthOptions(authType);
    if ('none' != document.getElementById('login_block').style.display) {
		userNameField = document.getElementById('login');
		deleteDefaultTitle(userNameField);
		userName = userNameField.value;
		redrawField(userNameField);
	} else {
		userNameField = document.getElementById(this.options.field);
		deleteDefaultTitle(userNameField);
		userName = userNameField.value;
		redrawField(userNameField);
	}
    var copyToBuffer = document.getElementById('copyToBufferPLease');
    copyToBuffer.style.display = 'none';
    hideAllAuthBlock();
    document.getElementById(this.options.block).style.display = "block";
    document.getElementById(this.options.tab).className = "bold";
    document.getElementById('authType').value = this.options.type;

    var defaultType = new AuthOptions().type;
    var display = 'none';
    if (defaultType != authType  && authType != null) {
        display = 'block';
        if (null != this.dialogHolder) {
            copyToBuffer.style.display = '';
        }
    }

    var howItWork = document.getElementById('howItWork');
    if (howItWork) {
        howItWork.style.display = display;
    }

	document.getElementById('login').value = userName;
	document.getElementById(this.options.field).value = userName;
	if ('' == userName) {
		redrawField(document.getElementById('login'));
		redrawField(document.getElementById(this.options.field));
	} else {
		deleteDefaultTitle(document.getElementById('login'));
		deleteDefaultTitle(document.getElementById(this.options.field));
	}
	this.removeErrors();
};

Authorization.prototype.setError = function(id, error) {
    if ('' != error) {
        if (document.getElementById(id)) {
            document.getElementById(id).className += ' eInput';

            var el = document.getElementById(id + authBlocksSuffix.ERROR);
            el.style.display = 'block';
            el.innerHTML = error;
        }
    }
};

Authorization.prototype.removeErrors = function() {
    document.getElementById(this.options.field).className = 'reqField typeText italic';
    document.getElementById(this.options.error).style.display = 'none';

    document.getElementById('password').className = 'reqField typeText italic';
    document.getElementById('password' + authBlocksSuffix.ERROR).style.display = 'none';
};

Authorization.prototype.displayForgotenPassword = function() {
    var isInCenter = this.isInCenter;
    authorization.close();
    this.isInCenter = isInCenter;

    if (this.isInCenter) {
        AuthDwr.getForgotenPasswordPopup(function(popupHtml) {
            modalPanel.add(null, popupHtml, 450, true, true);
        });
    } else {
        AuthDwr.getForgotenPasswordPopup(function(popupHtml) {
            modalPanel.add(null, popupHtml, 450, true, true);
        });
    }
};

Authorization.prototype.returnToLogin = function() {
    modalPanel.close();
    authorization.open();
};

Authorization.prototype.submitForgotenPassword = function() {
    AuthDwr.remindPassword(document.getElementById('fpemail').value, callbackForgotenPassword);
};

Authorization.prototype.showHelp = function(ev, helpBlock) {
    var help = document.getElementById(helpBlock);
    if (help) {
		help.style.display = '';
		
		if (modalPanel.defPosition(ev).x + help.offsetWidth > document.getElementsByTagName('body')[0].offsetWidth) {
			help.style.left = '100px';
		}
		var height;
		if (document.all) {
			height =  parseInt((document.documentElement.offsetHeight) + parseInt(document.documentElement.scrollTop));
		} else {
			height =  parseInt(document.documentElement.offsetHeight + window.scrollY);
		}

		if (modalPanel.defPosition(ev).y + help.offsetHeight > height) {
			help.style.top = '-83px';
		}
	}

    this.helpBlock = helpBlock;

    if (document.addEventListener) {
        document.addEventListener("click", authorization.hideHelp, false);
    } else if (document.attachEvent) {        
        document.attachEvent("onclick", authorization.hideHelp);
    }

	stopEvent(ev);
    return false;
};

Authorization.prototype.hideHelp = function() {
    var help = document.getElementById(authorization.helpBlock);
    if (help) {
        help.style.display = 'none';
    }

    this.helpBlock = '';

    if(document.removeEventListener){
        document.removeEventListener('click', authorization.hideHelp, false);
    } else {
        document.detachEvent('onclick', authorization.hideHelp);
    }
};

Authorization.prototype.keyListener = function(event) {
    var escKeyCode = 27;
    if (!event) {
        event = window.event;
    }

    if (event.keyCode == escKeyCode) {
        authorization.close();
    }
};

function callbackForgotenPassword(data) {
    document.getElementById('fpErrors').innerHTML = '';
    var inputs = document.getElementById('forgotenPassword').getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        document.getElementById('fpemail').className = 'HP bInput';
    }

    var isEmpty = true;
    for (i in data) {
        isEmpty = false;
        document.getElementById('fpErrors').className = 'eMsgShow error';
        if ('' != data[i]) {
            document.getElementById('fpErrors').innerHTML = document.getElementById('fpErrors').innerHTML + data[i];
        }
        document.getElementById('fp' + i).className = 'HP eInput';
    }

    if (isEmpty) {
        document.getElementById('fpErrors').className = 'eMsgHide error';
        document.getElementById('submitMessage').style.display = 'block';
    }
}

function callbackLogin(data) {
    var isEmpty = true;
    authorization.removeErrors();
    for (var i in data) {
        isEmpty = false;
        authorization.setError(i, data[i]);
    }

    if (isEmpty) {
		var date = new Date();
		date.setDate(date.getDate() + 100);
		document.cookie = 'authType=' + authorization.options.type + ';expires=' + date.toGMTString();
		location.reload(true);
    }
}

function callbackOpenID(data) {
    var isEmpty = true;
    authorization.removeErrors();
    for (var i in data) {
        isEmpty = false;
        authorization.setError(i, data[i]);
    }


    if (isEmpty) {
		var date = new Date();
		date.setDate(date.getDate() + 100);
		document.cookie = 'authType=' + authorization.options.type + ';expires=' + date.toGMTString();
        authorization.postOpenIdLoginForm();
    }
}

function hideAllAuthBlock() {
    var authBlocks = document.getElementById('auth_blocks');
    var divElements = authBlocks.getElementsByTagName('div');

    for (var i = 0; i < divElements.length; i++) {
        var div = divElements[i];
        if (div.id != 'auth_tabs') {
            div.style.display = 'none';
        } else {
            var spanElements = div.getElementsByTagName('span');
            for (var j = 0; j < spanElements.length; j++) {
                spanElements[j].className = 'underline link';
            }
        }
    }
}

function deleteDefaultTitle(obj, defValue) {
    var defVal = obj.getAttribute('defvalue');
    if (!defVal) {
        if (!defValue) {
            defValue = 'Заголовок записи';
        }
    } else {
        defValue = defVal;
    }
    if (defValue == obj.value) {
        obj.value = '';
        obj.style.fontStyle = 'normal';
        obj.style.color = '#000';
    } else if (obj.value != '') {  // по идее, на других страницах не должно сломаться
        obj.style.color = '#000';
    }
    return true;
}

function redrawField(obj, defValue) {
    var defVal = obj.getAttribute('defvalue');
    if (!defVal) {
        if (!defValue) {
            defValue = 'Заголовок записи';
        }
    } else {
        defValue = defVal;
    }
    if ('' == obj.value || obj.value == defValue) {
        obj.value = defValue;
        obj.style.fontStyle = 'italic';
        obj.style.color = '#ccc';
    } else {
        obj.style.color = '#000';
    }
    return true;
}

function AuthOptions(type) {
    this.type = type ? type : 'login';
    this.tab = this.type + authBlocksSuffix.TAB;
    this.block = this.type + authBlocksSuffix.BLOCK;
    this.field = this.type + authBlocksSuffix.FIELD;
    this.error = this.type + authBlocksSuffix.ERROR;
}

/*----------------------------begin logout code------------------------------*/
var logoutReturnPath = null;

function setLogoutReturnPath(pageLogoutReturnPath){
    logoutReturnPath = pageLogoutReturnPath;
}

function onLogout() {
    AuthDwr.logout(callbackLogout);
}

function callbackLogout() {
    if (logoutReturnPath == null) {
        var hrefCurrentPage = document.location.href;
        var indexAnchor = hrefCurrentPage.indexOf('#');
        var indexOfQuestionMark = hrefCurrentPage.indexOf('?');

        if (indexAnchor > 0){
            hrefCurrentPage = hrefCurrentPage.substring(0, indexAnchor);
        }

        if (indexOfQuestionMark > 0) {
            hrefCurrentPage = hrefCurrentPage.substring(0, indexOfQuestionMark);
        }

        if (hrefCurrentPage.indexOf('person') < 0 && hrefCurrentPage.indexOf('userId') < 0 && hrefCurrentPage.indexOf('userspace') < 0){
			var delimiterHref = './';
			if ('./' == hrefCurrentPage[hrefCurrentPage.length-1]) {
				delimiterHref = '';
			}
        }

		hrefCurrentPage = hrefCurrentPage.replace('.do','');

		logoutReturnPath = hrefCurrentPage;
    }
   	document.location = logoutReturnPath;
}

function onAutoLogout() {
    AuthDwr.logout(callbackAutoLogout);
}

function callbackAutoLogout() {
    var path = document.location.href.replace(/addFavorite=.*?(&|$)/g, "");
    path = path.replace(/#.*?(&|$)/g, "");
    document.location.href = path;
    //document.location.reload(false);
}

/*----------------------------end logout code------------------------------*/

/*----------------------------begin registration short---------------------*/

var registrationWindowsOpening = false;

function openRegistrationWindow() {
    if (!registrationWindowsOpening) {
        registrationWindowsOpening = true;

        AuthDwr.getRegistrationShortPopup(function(popupHtml) {
            modalPanel.add(null, popupHtml, 250, true, true);
            AuthDwr.regenerateCaptchaShort(callbackChangeCaptcha);
        });
    }
}

function closeRegistrationWindow() {
    modalPanel.close();
    registrationWindowsOpening = false;
}

function callbackChangeCaptcha(data) {
    if(data == null){
        data = "";
    }
    document.getElementById("rgtrSessionKey").value = data;
    var imgCaptcha = document.getElementById('imgCapcha');
    var serverUrl = imgCaptcha.getAttribute('serverUrl');
    imgCaptcha.src = (serverUrl ? serverUrl : '') + '/registration/generate/captcha/holder?sessionKey=' + data + '&temp=' + Math.random();
}

function checkUserInSystem(login) {
    if ('' != login) {
        AuthDwr.isUserRegistred(login, function(result) {
            if (result == true) {
                document.getElementById('rgtrLogin').className = 'eInput';
                document.getElementById('loginError').innerHTML = 'Логин '+login+' уже используется в системе';
            } else {
                document.getElementById('rgtrLogin').className = '';
                document.getElementById('loginError').innerHTML = '&nbsp;';
            }
        });
    }
}

function registerNewUser(){
    AuthDwr.shortRegistration(
            document.getElementById('rgtrLogin').value,
            document.getElementById('rgtrEmail').value,
            document.getElementById('rgtrPassword').value,
            document.getElementById('rgtrCode').value,
            document.getElementById('rgtrSessionKey').value,
            registrationCallBack);
}

function registrationCallBack(data){
    if(registrationWindowsOpening){
        var hasErrors = false;
        if(data != null){ //has errors
            for(var i in data){
                hasErrors = true;
                break;
            }
        }
        document.getElementById("loginError").innerHTML = data["login"] == null ? "&nbsp;" : data["login"];
        document.getElementById("passwordError").innerHTML = data["password"] == null ? "&nbsp;" : data["password"];
        document.getElementById("emailError").innerHTML = data["email"] == null ? "&nbsp;" : data["email"];
        document.getElementById("codeError").innerHTML = data["userKeyword"] == null ? "&nbsp;" : data["userKeyword"];
        if(!hasErrors){
            closeRegistrationWindow();
            var date = new Date();
            date.setDate(date.getDate() + 100);
            document.cookie = 'authType=login;expires=' + date.toGMTString();
            location.reload(false);
        }
    }
}
/*----------------------------end registration short---------------------*/

/*----------------------------begin registration form--------------------*/
var ie7 = (document.all && !window.opera && window.XMLHttpRequest);


function modalpanel() {
	this.contentHolder = null;
	this.mouseCoord = {x:0,y:0};
	this.isOpenWindow = false;
    this.newStyle = false;
}

modalpanel.prototype.setNewStyle = function(newStyle) {
    this.newStyle = newStyle;
};

modalpanel.prototype.moveModalWindowToCenter = function() {
	var contentTable  = document.getElementById('contentTable');
	if ((document.all) && (!ie7)) {        
        contentTable.style.top =  parseInt((document.documentElement.offsetHeight - contentTable.offsetHeight)/2 + parseInt(document.documentElement.scrollTop)) + 'px';
	} else {
        contentTable.style.top =  parseInt((document.documentElement.offsetHeight - contentTable.offsetHeight)/2) + 'px';
	}
    contentTable.style.left =  parseInt((document.documentElement.offsetWidth - contentTable.offsetWidth)/2) + 'px';
};

modalpanel.prototype.openModalWindow = function(conteinerId, width, newStyle) {
    if(newStyle){
        this.newStyle = newStyle;
    }
    var currentModalPanel = document.createElement('DIV');
	currentModalPanel.style.visibility = 'hidden';
	currentModalPanel.className = 'IEselectFix';
    currentModalPanel.id = 'IEselectFix';
    document.getElementsByTagName('body')[0].appendChild(currentModalPanel);

    var contentHider = document.createElement('DIV');
    contentHider.id = "contentHider";
    contentHider.className = "contentHider";
	if (document.all) {
		contentHider.style.height = (document.getElementsByTagName('body')[0].scrollHeight > document.getElementsByTagName('body')[0].offsetHeight)?document.getElementsByTagName('body')[0].scrollHeight + 'px':document.getElementsByTagName('body')[0].offsetHeight + 'px';
	} else {
		contentHider.style.height = (document.documentElement.scrollHeight > document.documentElement.offsetHeight)?document.documentElement.scrollHeight + 'px':document.documentElement.offsetHeight + 'px';
	}
	contentHider.innerHTML = '&nbsp;';
    currentModalPanel.appendChild(contentHider);

    var modWindowWrapper = document.createElement('DIV');
    modWindowWrapper.className = 'modWW';
    currentModalPanel.appendChild(modWindowWrapper);

    var contentTable = document.createElement('div');
	contentTable.id = 'contentTable';
    if(this.newStyle){
        contentTable.className = 'contentTableNew';
    }else{
        contentTable.className = 'contentTable';    
    }

    modWindowWrapper.appendChild(contentTable);

	contentTable.appendChild(document.getElementById(conteinerId));
    document.getElementById(conteinerId).style.display = '';

    contentTable.style.width = width + "px";

	var top = ((parseInt(this.mouseCoord.y + contentTable.offsetHeight) > (parseInt(document.documentElement.offsetHeight) + parseInt(document.documentElement.scrollTop)))?parseInt(document.documentElement.offsetHeight - contentTable.offsetHeight + parseInt(document.documentElement.scrollTop)):this.mouseCoord.y);
	if ((document.all) && (!ie7)) {        
        contentTable.style.top =  top + 'px';
	} else {
		contentTable.style.top =  (parseInt(top) - parseInt(document.documentElement.scrollTop)) + 'px';
	}
	var left = ((parseInt(this.mouseCoord.x + contentTable.offsetWidth) > parseInt(document.documentElement.offsetWidth))?parseInt(document.documentElement.offsetWidth - contentTable.offsetWidth):this.mouseCoord.x);
	contentTable.style.left =  left + 'px';

	var inputs = document.getElementById(conteinerId).getElementsByTagName('input');
	if (inputs.length) {
		for (var i = 0; i < inputs.length; i++) {
			if (('password' == inputs[i].type) || ('text' == inputs[i].type)){
				try {
					inputs[i].focus();
				} catch(e) {
//					alert(e);
				}
				break;
			}
		}
	}

    var ieFrame = document.createElement('IFRAME');
    ieFrame.className = 'ifram';
    ieFrame.style.height = (document.documentElement.scrollHeight > document.documentElement.offsetHeight)?document.documentElement.scrollHeight + 'px':document.documentElement.offsetHeight + 'px';
    ieFrame.id = 'IEhideSelect';
    currentModalPanel.appendChild(ieFrame);

    if ((document.all) && (!ie7)) {
        document.body.style.overflow = 'hidden';        
        document.documentElement.style.overflow = 'hidden';
    }

    if(this.newStyle){
        var tlc = document.createElement("b");
        var trc = document.createElement("b");
        var brc = document.createElement("b");
        var blc = document.createElement("b");

        tlc.className = 'tlc';
        trc.className = 'trc';
        brc.className = 'brc';
        blc.className = 'blc';

        var ts = document.createElement("b");
        var rs = document.createElement("b");
        var bs = document.createElement("b");
        var ls = document.createElement("b");

        ts.className = 'ts';
        ts.style.width = contentTable.offsetWidth + 'px';
        rs.className = 'rs';
        rs.style.height = parseInt(contentTable.offsetHeight - 82) + 'px';
        bs.className = 'bs';
        bs.style.width = contentTable.offsetWidth + 'px';
        ls.className = 'ls';
        ls.style.height = parseInt(contentTable.offsetHeight - 82) + 'px';

        contentTable.appendChild(tlc);
        contentTable.appendChild(trc);
        contentTable.appendChild(brc);
        contentTable.appendChild(blc);

        contentTable.appendChild(ts);
        contentTable.appendChild(rs);
        contentTable.appendChild(bs);
        contentTable.appendChild(ls);
    }
    this.newStyle = false;
};

modalpanel.prototype.closeModalPanel = function() {
    var currentModalPanel = document.getElementById('IEselectFix');
    if (currentModalPanel) {
		var contentTable = document.getElementById('contentTable');

//		contentTable.firstChild.style.display = 'none';
		contentTable.getElementsByTagName('div')[0].style.display = 'none';  // fix for http://bitlab.com.ua/jira/browse/PND-1684 [chester]
		if (null != this.contentHolder) {
			this.contentHolder.parentNode.removeChild(this.contentHolder);
			this.contentHolder = null;
		} else {
			document.getElementsByTagName('body')[0].appendChild(contentTable.firstChild);
		}
		currentModalPanel.parentNode.removeChild(currentModalPanel);

		document.body.style.overflow = '';
        document.documentElement.style.overflow = '';

    }
	return false;
};

modalpanel.prototype.defPosition = function(event) {
      var x = 0;
      var y = 0;
      if (document.attachEvent != null) { // Internet Explorer & Opera
            x = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
            y = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
      } else if (!document.attachEvent && document.addEventListener) { // Gecko
            x = event.clientX + window.scrollX;
            y = event.clientY + window.scrollY;
      } else {
            // Do nothing
      }
      return {x:x, y:y};
};

modalpanel.prototype.isOption = function(ev) {
	var isOpt = false;

	var el;
	if (document.all) {
		el = ev.srcElement;
	} else {
		el = ev.target;
	}    
	while (1 != el.nodeType) {
		el = el.parentNode;
	}

	while (el && el.tagName && ('body' != el.tagName.toLowerCase())) {
		if ('select' == el.tagName.toLowerCase()) {
			isOpt = true;
			break;
		}
		el = el.parentNode;
	}

	return isOpt;
};

modalpanel.prototype.getSelectCoord = function(ev) {
	var el;
	if (document.all) {
		el = ev.srcElement;
	} else {
		el = ev.target;
	}

	while (1 != el.nodeType) {
		el = el.parentNode;
	}

	while (el && el.tagName && ('body' != el.tagName.toLowerCase())) {
		if ('select' == el.tagName.toLowerCase()) {
			break;
		}
		el = el.parentNode;
	}

	var mOffsetTop = el.offsetTop;
	var mOffsetLeft = el.offsetLeft;
	var mOffsetParent = el.offsetParent;

	while(mOffsetParent) {
		mOffsetTop += mOffsetParent.offsetTop;
		mOffsetLeft += mOffsetParent.offsetLeft;
		mOffsetParent = mOffsetParent.offsetParent;
	}
	return {x:mOffsetLeft,y:mOffsetTop};
};

modalpanel.prototype.setMouseCoordFromEvenet = function(event) {
	var ev;
	if (event != null) {
		ev = event || window.event;
	} else {
		ev = null;
	}

	if (ev) {
		if (document.all || !this.isOption(ev)) {
			this.mouseCoord = this.defPosition(ev);
		} else {
			this.mouseCoord = this.getSelectCoord(ev);
		}
	}
};

modalpanel.prototype.open = function(event, id, width, center, opacity, newStyle) {
	if (this.isOpenWindow) {
		this.close();
	}

	if (!center) {
		this.setMouseCoordFromEvenet(event);
	}

	this.openModalWindow(id, width, newStyle);

	if (center) {
		this.moveModalWindowToCenter();
	}

	if (!opacity) {
		var hider = document.getElementById("contentHider");
		hider.className = 'contentHiderOpacity';
	}

	this.display();
 
	this.isOpenWindow = true;
};

modalpanel.prototype.display = function() {
	var currentModalPanel = document.getElementById('IEselectFix');
	if (currentModalPanel) {
		currentModalPanel.style.visibility = '';
	}
};

modalpanel.prototype.addContent = function(html) {
	if (this.contentHolder) {
		this.contentHolder.parentNode.removeChild(this.contentHolder);
	}
	this.contentHolder = document.createElement('div');
	this.contentHolder.id = 'modalWindowContentHolder';
	this.contentHolder.style.display = 'none';

	document.getElementsByTagName('body')[0].appendChild(this.contentHolder);
	this.contentHolder.innerHTML = html;
};

modalpanel.prototype.add = function(event, html, width, center, opacity, newStyle) {
	this.addContent(html);

	this.open(event, this.contentHolder.getElementsByTagName('div')[0].id, width, center, opacity, newStyle);
};

modalpanel.prototype.addReplace = function(html) {
	this.addContent(html);

	this.replace(this.contentHolder.getElementsByTagName('div')[0].id);
};

modalpanel.prototype.replace = function(id) {
	if (this.isOpenWindow && document.getElementById(id)) {
		var currentModalPanel = document.getElementById('IEselectFix');
		if (currentModalPanel) {
			var contentTable = document.getElementById('contentTable');

			contentTable.firstChild.style.display = 'none';
			if (null != this.contentHolder) {
				this.contentHolder.parentNode.removeChild(this.contentHolder);
				this.contentHolder = null;
			} else {
				document.getElementsByTagName('body')[0].appendChild(contentTable.firstChild);
			}

			contentTable.appendChild(document.getElementById(id));
			document.getElementById(id).style.display = '';
		}
	}
};

modalpanel.prototype.close = function() {
	if (this.isOpenWindow) {
		this.closeModalPanel();
		this.isOpenWindow = false;
	}
};

var modalPanel = new modalpanel();
/*----------------------------end registration form--------------------*/


var authorization = new Authorization();