
function GetWindowSize()
{
    var width = 0, height = 0;
    
    if( typeof( window.innerWidth ) == 'number' )
    {
        width = window.innerWidth;
        height = window.innerHeight;
    }
    else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
    {
        width = document.documentElement.clientWidth;
        height = document.documentElement.clientHeight;
    }
    else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
    {
        width = document.body.clientWidth;
        height = document.body.clientHeight;
    }
    
    return( [width,height] );
}

function GetWindowScroll()
{
    var scrOfX = 0, scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' )
    {
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    }
    else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
    {
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    }
    else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
    {
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    
    return [ scrOfX, scrOfY ];
}

function GetObjectVisibleSize( id )
{
    var w = 0, h = 0;
    if( typeof(id) == 'object' ) obj = id;
    else obj = document.getElementById(id);
    if( obj!=null )
    {
        w = ( obj.offsetWidth>0 )? obj.offsetWidth : obj.clientWidth;
        h = ( obj.offsetHeight>0 )? obj.offsetHeight : obj.clientHeight;
    }
    
    return( [w,h] );
}

function GetObjectSize( id )
{
    var w = 0, h = 0;
    if( typeof(id) == 'object' ) obj = id;
    else obj = document.getElementById(id);
    if( obj!=null )
    {
        w = obj.scrollWidth;
        h = obj.scrollHeight;
    }
    
    return( [w,h] );
}

function add_to_url(url,add)
{
    url = unescape( url );
    url2go = ""+ url;
    url2go = url2go.replace(/#/,"");
    params = add.match(/([^=]+)=(.*)/);
    if( params[1].length>0 )
    {
        if( url2go.indexOf(params[1]) != -1 )
        {
            //re = eval("/&*"+params[1]+"=[^&]*/");
            re = eval("/[&?]+"+params[1]+"=[^&]*/");
            url2go = url2go.replace(re,"");
        }
    }
    
    if( url2go.indexOf("?") == -1 )
    {
        url2go += "?" + add;
    }
    else
    {
        url2go += "&" + add;
    }
    
    return(url2go);
}

function convert_url( url )
{
    url = url.replace( /&amp;/g, "&" );
    
    return( url );
}

function send_confirm( url, msg )
{
    if( confirm(msg) )
    {
        document.location = url;
    }
}

function send_confirm_marked( url, msg )
{
    if( confirm(msg) )
    {
        var item;
        var i = 1;
        var ids = ''; delim = '';
        while( item = document.getElementById('del_item'+i) )
        {
            if( item.checked )
            {
                ids += delim + item.value;
                delim = ',';
            }
            i++;
        }
        if(ids!='')
        {
            document.location = add_to_url(url,'&ids='+ids);
        }
    }
}

function del_image( url )
{
    if( confirm('Delete this image?') )
    {
        document.location = url;
    }
}

function del_item( url, msg )
{
    if( msg == '' ) msg = "Do you want to delete this item?";
    if( confirm(msg) )
    {
        document.location = url;
    }
}

function popup_image_preview( width, height, image_url )
{
    p = window.open(image_url,'image_preview','scrollbars=yes,status=no,width='+ width +',height='+ height +',resizable=yes')
    p.document.body.style.margin = 0;
    return( false );
}

function popup_window( width, height, url )
{
    p = window.open(url,'window'+width,'scrollbars=yes,status=no,width='+ width +',height='+ height +',resizable=yes')
    //p.document.body.style.margin = 0;
    return( false );
}

function ScrollToObject( name )
{
    Element.scrollTo(name);
}

function element_is_null( obj_id )
{
    retval = false;
    obj = document.getElementById( obj_id );
    if( obj!=null )
    {
        if( obj.value== "" ) retval = true;
    }
    
    return(retval);
}

function element_is_email( obj_id )
{
    retval = false;
    obj = document.getElementById( obj_id );
    if( obj!=null )
    {
        if( obj.value.indexOf("@")!=-1 && obj.value.indexOf(".")!=-1 ) retval = true;
    }
    
    return(retval);
}

function element_is_number( obj_id )
{
    retval = false;
    obj = document.getElementById( obj_id );
    if( obj!=null )
    {
        obj.value = obj.value.replace( / /g, "" );
        re = /[\d\.\,-]/gi;
        if( obj.value.replace( re,"")=="" ) retval = true;
    }
    
    return(retval);
}

/* 
    form - form object
    elements - array of elements ['element id','{null|email|number}','alert message']
*/
function checkform( form, elements )
{
    msg = "";
    for( i in elements )
    {
        switch( elements[i][1] )
        {
            case 'email':
                if( !element_is_email( elements[i][0] ) ) msg += (elements[i][2]!="")? elements[i][2] +"\n" : "Element ["+ elements[i][0] +"] is not an email!\n";
                break;
            case 'number':
                if( !element_is_number( elements[i][0] ) ) msg += (elements[i][2]!="")? elements[i][2] +"\n" : "Element ["+ elements[i][0] +"] is not a number!\n";;
                break;
            case 'null':
            default:
                if( element_is_null( elements[i][0] ) ) msg += (elements[i][2]!="")? elements[i][2] +"\n" : "Element ["+ elements[i][0] +"] is null!\n";;
                break;
        }
    }
    if( msg!="" )
    {
        alert( msg ); return( false );
    }
    else return( true );
}

function OnLoad()
{
    /* redefined function */
}

function createCookie( name, value, days )
{
    if( days )
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for( var i=0; i<ca.length; i++ )
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

/*
    Get array of the elements by tag name and attribute tag
    Example:
        <input type="checkbox" tag="book" />
        GetElementsByTag( 'input', 'book' );
*/
function GetElementsByTag( tag, subtag )
{
    var retval = Array();
    
    if( tag )
    {
        var elms = document.getElementsByTagName( tag );
        if( subtag )
        {
            var j=0;
            for( var i=0; i<elms.length; i++ )
            {
                if( elms[i].getAttribute('tag') == subtag )
                {
                    retval[j] = elms[i];
                    j++;
                }
            }
        }
        else retval = elms;
    }
    
    return( retval );
}

/* Checkup group of checkboxes with names based on the template: "id{1...n}" and returns string divided with ","*/
function GetSelectedCheckboxes( id )
{
    var item;
    var i = 1;
    var ids = ''; delim = '';
    while( item = $('category_id'+i) )
    {
        if( item.checked )
        {
            ids += delim + item.value;
            delim = ',';
        }
        i++;
    }
    $(id).value = ids;
    
}
