function bookmarkURL(title)
{
    if (title == '')
        title = document.title;

    try{
        window.external.AddFavorite(document.location.href,title);
    }
    catch (e)
    {
        try{
            window.sidebar.addPanel(title, document.location.href,"");
        }
        catch(e1){}
    }
}

function $(id)
{
    return document.getElementById(id);
}


function sendJAction() 
{
    //arguments[0] - action
    //arguments[1] - module, if empty - current module
    //other arguments - parameters, ex. sendJAction('update', 'user', 'id', 5);
    //         sendJAction('update', '', 'id', 5, 'pid', 10);
    el = document.getElementById('xForm');
    if (el)
    {
        document.body.removeChild(el);
    }

    var xForm = document.createElement('FORM');
    var elemAction = document.createElement('INPUT');

    xForm.id = 'xForm';

    elemAction.setAttribute('type', 'hidden');
    elemAction.setAttribute('name', 'action');
    elemAction.setAttribute('value', arguments[0]);
    xForm.appendChild(elemAction);

    var Form = document.getElementById("mainform");
    var elemModule = document.createElement('INPUT');
    elemModule.setAttribute('name', 'module');
    elemModule.setAttribute('type', 'hidden');
    if (arguments[1])
        elemModule.setAttribute('value', arguments[1]);
    else 
        elemModule.setAttribute('value', Form.module.value);
    xForm.appendChild(elemModule);


    for (var i=2; i<arguments.length; i+=2)
    {
        var elem = document.createElement('INPUT');
        elem.setAttribute('name', arguments[i]);
        elem.setAttribute('type', 'hidden');
        try{elem.setAttribute('value', arguments[i+1]);}catch(e){};
        xForm.appendChild(elem);
    }
    xForm.setAttribute('method', 'post');
    xForm.target = '_self';

    document.body.appendChild(xForm);

    xForm.submit();
}

function Trim(str)
{
    if (typeof(str) == 'undefined' ) {
        str = '';
    }
    var re1 = /^\s*/;
    var re2 = /\s*$/;
    return str.replace(re1, "").replace(re2, "");
}

function checkForm2()
{
    var Form;
    
    if (arguments[0])
    {
        if (typeof arguments[0] == 'object')
        {
            Form = arguments[0];
        }
    }
    if (!Form)
        Form = document.getElementById(arguments[0]?arguments[0]:'mainform');

    if (Form != null)
    {

        var tElement = Form.getElementsByTagName("INPUT");
        for (var i=0; i<tElement.length; i++)
        {
		tElement[i].value=Trim(tElement[i].value);
            if (tElement[i].type == "text" || tElement[i].type == "password")
            {
                if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == '' && tElement[i].getAttribute('maynull') != '1'))
                {
                    alert(tElement[i].getAttribute('req'));
                    tElement[i].focus();
                    return false;
                }
                if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].type == 'checkbox') && !tElement[i].checked)
                {
                    alert(tElement[i].getAttribute('req'));

                    
                    tElement[i].focus();
                    return false;
                }
                if ((tElement[i].getAttribute('equal') != null) && (tElement[i].getAttribute('equal') != '')  && tElement[i].value!='')
                {
                    var t = tElement[i].getAttribute('equal');
                    eval("var tt = Form." + t);
                    if ((tt != null) && ((tt.value != tElement[i].value) && !(tElement[i].getAttribute('maynull') == '1' && tElement[i].value=='' && tt.value=='')))
                    {
                        alert(tElement[i].getAttribute('equaltext'));
                        tt.focus();
                        return false;
                    }
                }

                if ((tElement[i].getAttribute('is_email') != null) && (tElement[i].getAttribute('is_email') != '')  && tElement[i].value!='')
                {
                    var re = /^[0-9a-zA-Z&]([-_.]?[0-9a-zA-Z&])*@[0-9a-zA-Z&]([-.]?[0-9a-zA-Z&])*\.[a-zA-Z]{2,4}?$/; //[a-wyz][a-z](g|l|m|pa|t|u|v|fo)?
                    if (!tElement[i].value.match(re)) {
                        alert(tElement[i].getAttribute('is_email'));
                        tElement[i].focus();
                        return false;
                    }
                }
                
                if ((tElement[i].getAttribute('minlength') != null) && (tElement[i].getAttribute('minlength') != '') && (tElement[i].value.length < tElement[i].getAttribute('minlength'))&& !(tElement[i].getAttribute('maynull') == '1' && tElement[i].value=='' && tt.value==''))
                {
                    
                    alert(tElement[i].getAttribute('mintext'));
                    tElement[i].focus();
                    return false;
                }
            }
            else
            {
                if ((tElement[i].getAttribute('req') != null))
                {
                    var selected = false;
                    var all_group = document.getElementsByName(tElement[i].name);
                    for (var j=0; j<all_group.length; j++)
                        if (all_group[j].checked)
                            selected = true;
                    
                    if (!selected)
                    {
                        var v;
                        if (tElement[i].required && tElement != 'undefined')
                            v = 'Required field';
                        else
                            v = tElement[i].getAttribute('req'); 
                        alert(v);
                        tElement[i].focus();
                        return false;
                    }
                }
            }
        }

        tElement = Form.getElementsByTagName("SELECT");
        for (var i=0; i<tElement.length; i++)
        {
            if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == ''))
            {
                alert(tElement[i].getAttribute('req'));
                tElement[i].focus();
                return false;
            }
        }


        tElement = Form.getElementsByTagName("TEXTAREA");
        for (var i=0; i<tElement.length; i++)
        {
            if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == ''))
            {
                alert(tElement[i].getAttribute('req'));
                tElement[i].focus();
                return false;
            }
        }
        return true;
    }
    else
    {
        return false;
    }

}


function checkForm2_with_chk()
{
    var Form;
    if (arguments[0])
    {
        if (typeof arguments[0] == 'object')
        {
            Form = arguments[0];
        }
    }
    if (!Form)
        Form = document.getElementById(arguments[0]?arguments[0]:'mainform');

    if (Form != null)
    {

        var tElement = Form.getElementsByTagName("INPUT");
        for (var i=0; i<tElement.length; i++)
        {                                         
            if (tElement[i].type == "text" || tElement[i].type == "password")
            {
            	tElement[i].value=Trim(tElement[i].value);
                if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == '' && tElement[i].getAttribute('maynull') != '1'))
                {
                    alert(tElement[i].getAttribute('req'));
                    tElement[i].focus();
                    return false;
                }
                if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].type == 'checkbox') && !tElement[i].checked)
                {
                    alert(tElement[i].getAttribute('req'));

                    
                    tElement[i].focus();
                    return false;
                }
                if ((tElement[i].getAttribute('equal') != null) && (tElement[i].getAttribute('equal') != ''))
                {
                    var t = tElement[i].getAttribute('equal');
                    eval("var tt = Form." + t);
                    if ((tt != null) && ((tt.value != tElement[i].value) && !(tElement[i].getAttribute('maynull') == '1' && tElement[i].value=='' && tt.value=='')))
                    {
                        alert(tElement[i].getAttribute('equaltext'));
                        tt.focus();
                        return false;
                    }
                }

                if ((tElement[i].getAttribute('is_email') != null) && (tElement[i].getAttribute('is_email') != ''))
                {
                    var re = /^[0-9a-zA-Z&]([-_.]?[0-9a-zA-Z&])*@[0-9a-zA-Z&]([-.]?[0-9a-zA-Z&])*\.[a-zA-Z]{2,4}?$/;//[a-wyz][a-z](g|l|m|pa|t|u|v|fo)?
                    if (!tElement[i].value.match(re)) {
                        alert(tElement[i].getAttribute('is_email'));
                        tElement[i].focus();
                        return false;
                    }
                }
                
                if ((tElement[i].getAttribute('minlength') != null) && (tElement[i].getAttribute('minlength') != '') && (tElement[i].value.length < tElement[i].getAttribute('minlength'))&& !(tElement[i].getAttribute('maynull') == '1' && tElement[i].value=='' && tt.value==''))
                {
                    
                    alert(tElement[i].getAttribute('mintext'));
                    tElement[i].focus();
                    return false;
                }
            }
            else if (tElement[i].type == "checkbox" && tElement[i].getAttribute('req') == 'require')
            {
              var count_boxes = tElement[i].getAttribute('count_boxes');
              var prefix_boxes = tElement[i].getAttribute('prefix_boxes');
              var check_selected = false;
              for (var j=1; j<=count_boxes; j++)
              {
                if(document.getElementById(prefix_boxes + "_" + j).checked)
                {
                  check_selected = true;
                }
              }
              if (!check_selected)
              {
                v = tElement[i].getAttribute('error_message');
                alert(v);
                return false;
              }
              
            } 
            else
            {
            
                if ((tElement[i].getAttribute('req') != null))
                {
                    var selected = false;
                    var all_group = document.getElementsByName(tElement[i].name);
                    for (var j=0; j<all_group.length; j++)
                        if (all_group[j].checked)
                            selected = true;
                    
                    if (!selected)
                    {
                        var v;
                        if (tElement[i].required && tElement != 'undefined')
                            v = 'Required field';
                        else
                            v = tElement[i].getAttribute('req'); 
                        alert(v);
                        tElement[i].focus();
                        return false;
                    }
                }
            }
        }

        tElement = Form.getElementsByTagName("SELECT");
        for (var i=0; i<tElement.length; i++)
        {
            if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == ''))
            {
                alert(tElement[i].getAttribute('req'));
                tElement[i].focus();
                return false;
            }
        }


        tElement = Form.getElementsByTagName("TEXTAREA");
        for (var i=0; i<tElement.length; i++)
        {
            if ((tElement[i].getAttribute('req') != null) && (tElement[i].getAttribute('req') != '') && (tElement[i].value == ''))
            {
                alert(tElement[i].getAttribute('req'));
                tElement[i].focus();
                return false;
            }
        }
        return true;
    }
    else
    {
        return false;
    }

}

function getBounds(tElement)
{
  var left = tElement.offsetLeft,
        top = tElement.offsetTop,
        parent;
  for (parent = tElement.offsetParent; parent; parent = parent.offsetParent)
  {
    left += parent.offsetLeft;
    top += parent.offsetTop;
  }
  return {left: left, top: top, width: tElement.offsetWidth, height: tElement.offsetHeight};
}

function setPosition()
{
    var scrollTop = document.body.scrollTop,
        tElement = arguments[0],
        tBounds = arguments[1],
        w = tElement.clientWidth,
        h = tElement.clientHeight,
        winW = document.body.clientWidth,
        winH = document.body.clientHeight,
        vPX = 0,
        tHeightNotSet = true;
    
    if ((w + tBounds.left > winW) && (winW - w + tBounds.left > w))
        tElement.style.left = tBounds.left - w + tBounds.width;
    else
        tElement.style.left = tBounds.left;

    if (h + tBounds.top > winH + scrollTop)
    {
        if (h - tBounds.top > 0)
            if (h + tBounds.top - winH - scrollTop > h - tBounds.top)
                tHeightNotSet = false;
    }
    
    if ((tBounds.top + h > winH + scrollTop) && tHeightNotSet)
        if (tBounds.top - h - scrollTop > 0)
            tHeightNotSet = false;
    
    if ((winH - tBounds.top + scrollTop - h - tBounds.height < 0) && (tBounds.top - scrollTop - h > winH - tBounds.top + scrollTop - h - tBounds.height))
        tHeightNotSet = false;

    if (tHeightNotSet)
        tElement.style.top = tBounds.top + tBounds.height + vPX
    else
        tElement.style.top = tBounds.top - h - vPX;
}


function setAddonBlockHeight(){
	// vertical align/ filling empty space
	var addon_div=$(arguments[0]); //empty div inserted in short div
	var higest=$(arguments[1]);			  //Higest div
	var shorted=$(arguments[2]);
	var dx = arguments[3];
	if (typeof(dx)=='undefined') {
		dx=0;	//for IE
	}
	if(navigator.appName=='Microsoft Internet Explorer'){dx=2;}
	newHeight=higest.offsetHeight-shorted.offsetHeight+dx;
	if (newHeight>0) {
		addon_div.style.height=newHeight+'px';
	}
	
}
function applyBlogHeights (sIdBlock1,sIdBlock2,sIdBlock1Add,sIdBlock2Add,add) {
/*	if (iYFix==null) {
		iYFix=0;
	}*/
	newHeight1=$(sIdBlock1).offsetHeight;
	newHeight2=$(sIdBlock2).offsetHeight;
	if (newHeight2>newHeight1) {
		setAddonBlockHeight(sIdBlock1Add,sIdBlock2,sIdBlock1,add);
	} else {
		setAddonBlockHeight(sIdBlock2Add,sIdBlock1,sIdBlock2,add);
	}
}

function addElementHintListeners(element)
{
    var hint = element.getAttribute('hint');    
    var hintColor = '#AAAAAA';
    if ( typeof element.focused == 'undefined' ) {
        element.focused = false ;
    }
    if ( typeof element.norm_color == 'undefined' ) {
        element.norm_color = element.style.color;

    }
    
    if (element.tagName == 'INPUT') {
        if (element.focused == false && Trim(element.value) == '') {
            element.value = hint;
            element.style.color = hintColor;
        }
        
        element.onblur = function(){
            if (Trim(element.value) == '' || Trim(element.value) == hint){
                element.style.color = hintColor;
                element.value = hint;                
            }
            element.focused = false;
        }
        
        inpclick = function(){
            if (element.value == hint) {
                element.value = '';            
            }
            element.style.color = element.norm_color;
            element.focused = true;
        }

        element.onclick = inpclick;
        element.onfocus = inpclick;
        
        
    } else if (element.tagName == 'TEXTAREA'){
        if (element.focused == false && Trim(element.value) == '') {
            element.value = hint;
            element.style.color = hintColor;
        }
        
        element.onblur = function(){
            /*alert("'" + element.value+ "'");
            console.log(element, element.innerHTML, Trim(element.innerHTML));*/
            if (Trim(element.value) == '' || Trim(element.value) == hint) {
                element.style.color = hintColor;
                element.value = hint;
            }
            element.focused = false;
        }
        
        taclick = function(){
            if (element.value == hint) {
                 element.value = '';
            }
            element.style.color =  element.norm_color;
            element.focused = true;
        }
        element.onclick = taclick;
        element.onfocus = taclick;
        
    }
    

}

function addFormHints()
{
    var Form;

    if (arguments[0]) {
        if (typeof arguments[0] == 'object') {
            Form = arguments[0];
        }
    }
    if (!Form) {
        Form = document.getElementById(arguments[0]?arguments[0]:'mainform');
    }


    if (Form != null) {
        var tElement = Form.getElementsByTagName("INPUT");
        for (var i=0; i<tElement.length; i++) {
            tElement[i].value=Trim(tElement[i].value);
            if (tElement[i].type == "text" ) {
                if ((tElement[i].getAttribute('hint') != null) && (tElement[i].getAttribute('hint') != '') ) {
                    addElementHintListeners(tElement[i]);
                }
            }            
        }

        var taElement = Form.getElementsByTagName("TEXTAREA");
        for (i=0; i<taElement.length; i++) {
            taElement[i].value=Trim(taElement[i].value);            
            if ((taElement[i].getAttribute('hint') != null) && (taElement[i].getAttribute('hint') != '') ) {
                addElementHintListeners(taElement[i]);
            }
            
        }
        
        
        
        
    }
}

function clearFormHints()
{
    var Form;

    if (arguments[0]) {
        if (typeof arguments[0] == 'object') {
            Form = arguments[0];
        }
    }
    if (!Form) {
        Form = document.getElementById(arguments[0]?arguments[0]:'mainform');
    }
    //console.log('aaa');
    if (Form != null)
    {
        var tElement = Form.getElementsByTagName("INPUT");
        for (var i=0; i<tElement.length; i++) {
            if ((tElement[i].getAttribute('hint') != null) &&
                (tElement[i].getAttribute('hint') != '') &&
                (tElement[i].value == tElement[i].getAttribute('hint') ) )
                {
                tElement[i].value = '';
            }
        }

        var taElement = Form.getElementsByTagName("TEXTAREA");
        for (i=0; i<taElement.length; i++) {
            if ((taElement[i].getAttribute('hint') != null) &&
                (taElement[i].getAttribute('hint') != '') &&
                (Trim(taElement[i].value) == taElement[i].getAttribute('hint') ) )
                {
                taElement[i].value = '';
            }
        }
    }
    return true;

}

