// add admin link to page if authenticated. this will open
// modalDialog. if not authenticated add login link


function _(id) {
    return document.getElementById(id);
};

function loginPage() {

    var url = '/Login';
    var ajax = new Ajax.Updater( {success: 'modalDialogBox'}, url, {method: 'get'} );
    styleModal(300,120,'#95aeb6','#333333');
    md=_('modalDialogBox')
    md.style.visibility='visible'
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}

function logoutPage() {

    var url = '/CatalogManager/Logout';
    var ajax = new Ajax.Updater( {success: 'modalDialogBox'}, url, {method: 'get'} );
    styleModal(300,120,'#95aeb6','#333333');
    md=_('modalDialogBox')
    md.style.visibility='visible'
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}

function doLogin()
{
    var frm = document.forms['login'];

    email = frm['email'].value;
    passwd = frm['passwd'].value;
    errors = new Array();
    if(email.length <=4)
        errors.push('Email') 
    if(passwd.length <=1)
        errors.push('Password') 

    if(errors.length)
    {
        document.getElementById('loginErrors').innerHTML='Errors:'+errors.join(', ')
        return false;
    } 
    var url = '/Catalog/Login';
    var params = 'email='+email+'&passwd='+passwd+'&goto='+location.pathname;
    var ajax = new Ajax.Updater( {success: 'modalDialogBox'}, url, {method: 'post',parameters: params } );


}

function manageCatalog()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/ContextMenu';
    var ajax = new Ajax.Updater( {success: 'modalDialogBox'}, url, {method: 'post',parameters: params } );
    styleModal(300,240,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}


function styleModal(width,height,backgroundColor,color)
{
    md=document.getElementById('modalDialogBox')
    s= md.style;
    s.display='none';
    s.position='absolute';
    s.zIndex='1000';
    s.backgroundColor=backgroundColor;
    s.color=color;
    s.border='solid 1px #000000';
    s.padding='10px';
    var horizCenter = ( ( Geometry.getViewPortWidth() + Geometry.getHorizontalScroll() ) /2 ) ;
    var vertCenter = ( ( Geometry.getViewPortHeight() + Geometry.getVerticalScroll() )/2 ) ;

    var newLeft = horizCenter-width/2;
    var newTop = vertCenter-height/2;
    //s.left=newLeft+'px';
    //s.top=newTop+'px';
    var viewPortTop = Geometry.getVerticalScroll() ;
    s.right='2px';
    s.top=viewPortTop+'px';
    s.width=width+'px';
    s.height=height+'px';


}

function hideModal()
{
    md=document.getElementById('modalDialogBox')
    new Effect.Fade(md);
    md.innerHTML=''

}

function getAddItemForm()
{
    var params = 'action=addItemForm&path='+location.pathname;
    var url = '/CatalogManager/AddItemForm';
    var ajax = new Ajax.Updater( {success: 'modalDialogBox'}, url, {method: 'get',parameters: params } );

    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0,
    afterFinish: function() {
        $('nodeDisplayName').focus();
    }
     
    });




}

function getAddCategoryForm()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/AddCategory';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'get',parameters: params } );
    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}

function getEditCategoryForm()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/EditCategory';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'get',parameters: params } );
    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}


function getSetImageForm()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/SetImages';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( { success: 'modalDialogBox' }, url, {method: 'get',parameters: params } );
    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}

function getLinkItemForm()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/LinkItems';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( { success: 'modalDialogBox' }, url, {method: 'get',parameters: params } );
    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}


function getEditItemForm()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/EditItem';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( { success: 'modalDialogBox' }, url, {method: 'get',parameters: params } );
    styleModal(500,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});
}

function getImageUploadForm()
{
    var url = '/CatalogManager/UploadImages';
    md=document.getElementById('modalDialogBox')
    md.innerHTML=''
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'get'} );
    styleModal(400,500,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}


function deleteItemLocation()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/DeleteItemLocation';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );
    styleModal(300,150,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}

function deleteCategory()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/DeleteCategory';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );
    styleModal(300,150,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}
function deleteItem()
{
    var params = 'path='+location.pathname;
    var url = '/CatalogManager/DeleteItem';
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );
    styleModal(300,150,'#95aeb6','#333333');
    new Effect.Appear(md,{duration:1.2,from:0,to:1.0});

}


function submitImageEditor()
{
    var url = '/CatalogManager/SetImages';
    params = Form.serialize('imageForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );

}

function submitItemLinker()
{
    var url = '/CatalogManager/LinkItems';
    params = Form.serialize('itemForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );

}

function submitCategoryAdder()
{
    var url = '/CatalogManager/AddCategory';
    params = Form.serialize('categoryForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );

}

function submitImageUploader()
{
    var url = '/CatalogManager/UploadImages';
    params = Form.serialize('imageUploadForm')
    //md=document.getElementById('modalDialogBox')
    //var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );
    //styleModal(400,300,'#95aeb6','#333333');
    //new Effect.Appear(md,{duration:1.2,from:0,to:1.0});


}

function submitItemAdder()
{
    var url = '/CatalogManager/AddItem';
    params = Form.serialize('itemForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );

}

function submitItemEditor()
{
    var url = '/CatalogManager/EditItem';
    params = Form.serialize('itemForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );

}

function submitCategoryEditor()
{
    togglePublished(); 
    var url = '/CatalogManager/EditCategory';
    params = Form.serialize('categoryForm')
    md=document.getElementById('modalDialogBox')
    var ajax = new Ajax.Updater( {success: 'modalDialogBox' }, url, {method: 'post',parameters: params } );
}

function togglePublished()
{
    var pub = document.getElementById('nodePublished')
    var ckr = document.getElementById('nodePublishedChecker')

    if(ckr.checked)
        pub.value=1;
    else
        pub.value=0;

}



function nameFixup() {
    var NameAllow =  '_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890';

    var nm = document.getElementById('nodeName');
    nm.value = whiteSpaceFix(nm.value);
    nm.value = stringReplaceAll(nm.value,' ','-')
    nm.value = stringReplaceAll(nm.value,'&','and')
    nm.value=stringFilter(nm.value,NameAllow)
    nm.value=trimChar(nm.value,"-")
    setPath();

}   

function displayNameFixup() {
    var DisplayNameAllow = ' /_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890()-+=!@#$%^&*:;"?[].';
    var dnm = document.getElementById('nodeDisplayName');
    dnm.value=whiteSpaceFix(dnm.value);
    dnm.value=stringFilter(dnm.value,DisplayNameAllow);

    dnm.value=trimString(dnm.value);
    dnm.value=trimChar(dnm.value,"-");
    setDisplayPath();
    var nm = displayNameToName(dnm.value);
    _('nodeName').value=nm;
    nameFixup();

}   


function displayNameToName(s) {
    var NameAllow =  '_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.';
    s = whiteSpaceFix(s);
    s = stringReplaceAll(s,'&','and');
    s = stringReplaceAll(s,' ','-');
    s = stringReplaceAll(s,'/','-');
    s=stringFilter(s,NameAllow);
    s = whiteSpaceFix(s);
    // If we have N sequences of disallowed characters separated
    // by hyphens we can end up with N trailing and/or leading hyphens 
    s=trimChar(s,"-")
    return s
}

function setDisplayPath()
{

    var dnm = document.getElementById('nodeDisplayName').value;
    var pp = _('nodeParentDisplayPath').value;
    _('nodeDisplayPath').value =  joinPaths(pp,dnm)+'/';

}

function setPath()
{

    var dnm = _('nodeName').value;
    var pp = _('nodeParentPath').value;
    _('nodePath').value =  joinPaths(pp,dnm)+'/';

}

function joinPaths(p1,p2)
{

    var np = p1+'/'+p2;
    np = stringReplaceAll(np,'//','/');
    return np;
}

function truncateShortDescription()
{
    sd = document.getElementById('nodeShortDescription');
    sd.value = sd.value.substring(0,255);

}



// #######################################################################
// Utility functions for string manipulation and filtering. Move elsewhere?
// #######################################################################


function trimString(str) {
  while( str.charAt(0) == (" ") )
    str = str.substring(1);
  while(str.charAt(str.length-1) == " " )
    str = str.substring(0,str.length-1);
  return str;
}


// remove arbitrary number of occurences of a character from
// both ends of a string.
function trimChar(str,c)
{
  while( str.charAt(0) == c )
    str = str.substring(1);
  while(str.charAt(str.length-1) == c )
    str = str.substring(0,str.length-1);
  return str;

}

function stringFilter(s,allowed) {
    var filtered='';
    for(i=0;i < s.length; i++)
    {
        if( allowed.indexOf(s.charAt(i) ) != -1)
            filtered += (s.charAt(i));
    }
    filtered = trimString(filtered)
    return filtered;

}

function stringReplaceAll(s,f,r) {
    while( s.indexOf(f) != -1)
        s=s.replace(f,r);
    return s;
}


function whiteSpaceFix(s) {
    s = trimString(s);
    s = s.replace(new RegExp(/\s+/g) ,' ');
    return s;
}


function insertContextLink()
{
    var cm = document.createElement('div');
    cm.id='contextLink'
    cm.innerHTML='<a href="">&raquo;</a>';
    document.body.insertBefore(cm,document.body.childNodes[1]);

}

function insertDialogDiv()
{
    var cm = document.createElement('div');
    cm.id='modalDialogBox'
    document.body.insertBefore(cm,document.body.childNodes[1]);

}

function positionContextLink()
{
    var newTop = Geometry.getVerticalScroll() - 8;
    var cm = document.getElementById('contextLink');
    cm.style.top=newTop+'px';
    var md = document.getElementById('modalDialogBox');
    md.style.top=newTop+'px';
}


function setAutoCompleter(imageArray,field,choices) {
    new Autocompleter.Local(field, choices, imageArray)
    // new Autocompleter.Local('ac_image', 'ac_choices', imageArray)

}

onload = function() {
    // retrieve the contents of the acl div. 
    insertContextLink();
    insertDialogDiv();
    window.onscroll=positionContextLink
    var ajax = new Ajax.Updater( {success: 'contextLink'}, '/Catalog/ContextLink', {method: 'get'} );
}





