// __date__    = "$Date: 7/31/07 5:05p $"
// __version__ = "$Revision: 26 $"
// __author__  = "$Author: Csitko $"

function determine_site()
{
    var bma = 'bluemountain.';
    var ag = 'americangreetings.';
    var agbeta = 'beta.';
    var url = window.location.toString().toLowerCase();
    if(url.indexOf(agbeta) > -1)
        return 'agbeta';
    if(url.indexOf(bma) > -1)
        return 'bma';
    if(url.indexOf(ag) > -1)
        return 'ag';
    return 'ag';
}

function is_beta()
{
	// flash cookie is on all pages but only in beta so we'll look for that.
	var fcookie = document.getElementById("fcookie");
	
	if(fcookie != null)
		return true;
	else
		return false;
}

//change text in left nav
function change_nav_text(demo)
{
    if(demo==undefined) demo=true;
    var cookie = demo ? 'womprefd' : 'wompref';
    var default_text = 'View Events';

    var view_text = get_double_nvp_value(cookie, 'wview');
    if(!view_text)
        view_text = 'Calendar';
    var view_link = document.getElementById('agi-view-events');

    try{
        view_text = view_text.charAt(0).toUpperCase() + view_text.substr(1).toLowerCase();
    }
    catch(e){
        view_text = default_text;
    }
	try{
    	view_link.innerHTML = '';
    	view_link.appendChild(document.createTextNode('View '+view_text));
    } catch(e){}
}

function check_for_message(message_div, message, class_name, page_name){
    if(!message)
        return;
    if(message == 'demo')
    {
        write_demo_message(message_div, page_name)
        return;
    }
    write_message(message_div, message, class_name);
}

function write_demo_message(demo_div, page_name)
{
	// new messages for AG without demo messaging.
	if (is_beta())
		return write_notdemo_message(demo_div, page_name);
		
    var demo_message = '';
	if (is_beta())
	{
		var signin_link = ahost+'/auth/signin.pd';
		var register_link = ahost+'/register/register.pd?app=reminders';
    } else {
		var signin_link = ahost+'/members/signin.pd';
		var register_link = ahost+'/members/register.pd?app=reminders';
	}
	var continue_link = ahost+'/reminders/index.pd';

    if(!page_name)
        page_name = '_default';

    var firstline = {};
    firstline.add = 'add events to your calendar';
    firstline.edit = 'edit event details on your calendar';
    firstline.holiday = 'add holidays to your calendar';
    firstline.option = 'change your preferences';
    firstline.request = 'request birthdays and other events';
    firstline.share = 'share events with others';
    firstline._default = 'use Reminders';

    demo_message += '<p><strong>You must be signed in to '+firstline[page_name]+'.</strong></p>';
    demo_message += '<p><a href="'+signin_link+'">Sign in</a> or ';
    demo_message += '<a href="'+register_link+'">Register</a> to get started now!</p>';
    demo_message += '<p><a href="'+continue_link+'">Continue tour</a> of example calendar.</p>';
    write_message(demo_div, demo_message, 'agi-message-area agi-message-demo');
}

function write_demo_saved_message(demo_div, add_another)
{
	// new messages for AG without demo messaging.
	if (is_beta())
		return write_notdemo_saved_message(demo_div, add_another);
		
    var demo_message = '';
    if (is_beta())
    {
        var signin_link = ahost+'/auth/signin.pd';
        var register_link = ahost+'/register/register.pd?app=reminders';
    } else {
        var signin_link = ahost+'/members/signin.pd';
        var register_link = ahost+'/members/register.pd?app=reminders';
    }
    if (add_another)
	    var continue_link = "javascript:wevent.reset_form();";
	else
	    var continue_link = "javascript:hideLightbox()";
	
    demo_message += '<p><strong>You must be signed in to view the event you just added.</strong></p>';
    demo_message += '<p><a href="'+signin_link+'">Sign in</a> or ';
    demo_message += '<a href="'+register_link+'">Register</a> to view your event now!</p>';
    demo_message += '<p><a href="'+continue_link+'">Continue tour</a> of example calendar.</p>';
    write_message(demo_div, demo_message, 'agi-message-area agi-message-demo');
}

function write_notdemo_message(demo_div, page_name)
{

    var demo_message = '';
	var signin_link = ahost+'/auth/signin.pd';
	var register_link = ahost+'/register/register.pd?app=reminders';
	var continue_link = ahost+'/reminders/index.pd';

    if(!page_name)
        page_name = '_default';

    var firstline = {};
    firstline.add = 'To save this event and receive FREE reminders by email or cell phone, ';
    firstline.edit = 'To edit event details and receive FREE reminders by email or cell phone,, ';
    firstline.holiday = 'To add holidays to your calendar and receive FREE reminders by email or cell phone, ';
    firstline.option = 'To save your preferences, ';
    firstline.request = 'To request events, ';
    firstline.share = 'To share events, ';
    firstline._default = 'To start receiving your FREE reminders, ';

    var lastline = {};
    lastline.add = '';
    lastline.edit = '';
    lastline.holiday = '';
    lastline.option = '';
    lastline.request = '';
    lastline.share = '';
    lastline._default = '';
	
	demo_message += '<p class="agi-siteerror">'
	demo_message += firstline[page_name];
	demo_message += '<span class="agi-reminders-black"><a href="'+register_link+'">register now</a>. Already registered? <a href="'+signin_link+'">Sign in</a>.</span>';
	demo_message += lastline[page_name];
	demo_message += '</p>'
	
    write_message(demo_div, demo_message, 'agi-message-area agi-message-demo');
}

function write_notdemo_saved_message(demo_div, add_another)
{
    var demo_message = '';
    var signin_link = ahost+'/auth/signin.pd';
    var register_link = ahost+'/register/register.pd?app=reminders';
    if (add_another)
	    var continue_link = "<a href='javascript:wevent.reset_form();'>continue</a>";
	else
	    var continue_link = "<a href='javascript:hideLightbox()'>close window</a>";	
    demo_message += '<p class="agi-siteerror">To save this event and receive FREE reminders by email or cell phone, <span class="agi-reminders-black"><a href="'+register_link+'">register</a> now. Already registered? <a href="'+signin_link+'">Sign in</a>.</span></p>';
    demo_message += '<p class="agi-siteerror" style="margin: 1em 0px 0px 0px; text-align: right; font-size: 11px; font-weight: normal;">' + continue_link + '</p>';
    write_message(demo_div, demo_message, 'agi-message-area agi-message-demo');
}

function expire_cookie(cookie)
{
    AGCookie.expireCookie(cookie);
    MagicCookie.delCookieValue(cookie, true);
    MagicCookie.delCookieValue(cookie, false);
}

function set_double_nvp_value(cookie, key, new_value, encode, permanent)
{
    if(encode==undefined) encode = true;
    if(permanent==undefined) permanent = false;
    
    var new_cookie_value;
    var old_cookie_value = MagicCookie.getCookieValue(cookie);
    if(!old_cookie_value)
    {
        new_cookie_value = key+'='+escape(new_value);
    }
    else
    {
        if(encode)
            old_cookie_value = Base64.decode(unescape(old_cookie_value));
        var old_value = get_nvp_value(old_cookie_value, key);
        if(old_value)
            new_cookie_value = old_cookie_value.replace(key+'='+old_value,key+'='+escape(new_value));
        else
            new_cookie_value = old_cookie_value+'&'+key+'='+escape(new_value);
    }
    if(encode)
        new_cookie_value = Base64.encode(new_cookie_value);
    MagicCookie.setCookieValue(cookie, new_cookie_value, permanent);
}

function get_double_nvp_value(cookie, key, encoded)
{
    if(encoded==undefined) encoded = true;
    
    var cookie_val = MagicCookie.getCookieValue(cookie);
    if(!cookie_val)
        return '';
    if(encoded)
        cookie_val = Base64.decode(unescape(cookie_val));
    return get_nvp_value(cookie_val, key);
}

function get_nvp_value(cookie_val, key)
{
    if(!cookie_val || !key)
        return '';
    return NVP.getValue(cookie_val, key, '=', '&');
}



//////////////////////////////////////////////////////
// Theme Changer object                             //
//////////////////////////////////////////////////////
function theme_changer(id, style_div, demo)
{
    if(demo==undefined) demo=true;
    var bDebug = true;
    var tc = this;
    this.list = document.getElementById(id);
    this.c_anchor = '';
    this.which = '';
    this.opening_theme = '';
    this.queue_theme = '';
    this.demo = demo;
    this.cookie = this.demo ? 'womprefd' : 'wompref';
    this.style_div = style_div;
    this.req = '';
    
    
    

    this.do_onload = function()
    {
        this.which = get_double_nvp_value(this.cookie, 'wtheme');
        if(!this.which)
            this.which = 'dflt';
        this.opening_theme = this.which;
        this.change_theme();
        this.set_theme_listeners();
        window.onunload = this.set_theme_pref;
    };

    this.set_theme_listeners = function()
    {
        var anchors = this.list.getElementsByTagName('a');
        for(var i=0; i<anchors.length; i++)
        {
            try
            {
                anchors[i].onclick = function()
                {
                	tc.c_anchor=this;
                	tc.change_theme();
                };
                var smaller = function()
                {
 					this.style.width = "15px";
 					this.style.height = "15px";
 					this.parentNode.style.width = "15px";
 					this.parentNode.style.height = "15px";
 					this.parentNode.style.position = "relative";
 					this.parentNode.style.top = "0px";
 					this.parentNode.style.left = "0px";
                }
                anchors[i].getElementsByTagName('IMG')[0].onmouseout = smaller;
                anchors[i].getElementsByTagName('IMG')[0].onclick = smaller;

                anchors[i].getElementsByTagName('IMG')[0].onmouseover = function()
                {
 					this.style.width = "25px";
 					this.style.height = "25px";
 					this.parentNode.style.width = "25px";
 					this.parentNode.style.height = "25px";
 					this.parentNode.style.position = "absolute";
 					this.parentNode.style.top = "-5px";
 					this.parentNode.style.left = "-5px";
                }
            }
            catch(e){}
        }
    };

    this.change_theme = function()
    {
      
        if(this.req)
        {
            //ajax call in process, queue click
            if(this.req.in_process)
            {
                this.queue_theme = this.c_anchor;
                return;
            }
        }
        if(this.c_anchor)
            this.which = this.c_anchor.firstChild.src.split('/theme/')[1].split('.')[0];
            
        var curr_value = get_double_nvp_value(this.cookie, 'wtheme');
        if(this.c_anchor && curr_value==this.which)
            return;

        this.set_selected();


        this.change_stylesheet();
        this.change_print_image();
    };

    this.set_selected = function()
    {
        var spans = this.list.getElementsByTagName('span');
        for(var i=0; i<spans.length; i++)
        {
            try
            {
                spans[i].removeAttribute('class');
                spans[i].removeAttribute('className');
            }
            catch(e){}
        }
        
        var elem = this.get_theme_span();
        try{
            if(elem.tagName.toLowerCase()=='span')
            {
                elem.setAttribute('class','agi-selectedt');
                elem.setAttribute('className','agi-selectedt');



            }
        }
        catch(e){}
    };
    
    this.get_theme_span = function()
    {
        var elem;
        if(this.c_anchor)
            elem = this.c_anchor.parentNode.parentNode;             
        else
        {
            var images = this.list.getElementsByTagName('img');
            for(var i=0; i<images.length; i++)
            {
                if(images[i].src.indexOf(this.which) != -1)
                {
                    elem = images[i].parentNode.parentNode.parentNode;
                    break;
                }
            }
        }
        return elem;
    };
    
    this.change_stylesheet = function()
    {
        if(!this.which)
            this.which = 'dflt';
        this.load_genix();
        this.set_theme_cookie();

    };

    this.load_stylesheet = function()
    {
        if(!this.which) this.which = 'dflt';
        var ss = document.styleSheets;
        var changed = false;
        for(var i=0; i<ss.length; i++)
        {
            if(ss[i].title && ss[i].title==this.which)
            {
                this.load_genix();
                ss[i].disabled = false;
                ss[i].rel = "stylesheet";
                changed = true;
            }
            else if(ss[i].title)
            {
                ss[i].disabled = true;
                ss[i].rel="alternate stylesheet";
            }
        }
        return changed;
    };

    this.load_genix = function()
    {
        var url_to_open = ahost+'/reminders/getgenix.pd?var=UIBremtheme'+this.which;
        var send_method = 'GET';
        var allow_async = true;
        var show_waiting = false;
        var req = new Requester(url_to_open, send_method, allow_async, show_waiting);
        req.onsuccess = this.load_genix_success;
        req.onerror = this.load_genix_error;
        req.sendRequest();
        this.req = req;
    };

    this.load_genix_success = function(req)
    {
        try{
            eval('var style_string='+req.responseText);
			try {
				dojo.html.insertCssText(style_string);
			} catch (e) {
				dojo_insertCssText(style_string);
//	            var style_div = document.getElementById(tc.style_div);
//    	        style_string = '&nbsp;'+style_string+'&nbsp;';
//        	    style_div.innerHTML = style_string;
        	}
        }
        catch(e){}
    };

    this.load_genix_error = function (req)
    {
        //insert processing if needed
    };

    this.set_theme_cookie = function()
    {
        set_double_nvp_value(this.cookie, 'wtheme', this.which);
        if(this.queue_theme)
        {
            this.c_anchor = this.queue_theme;
            this.queue_theme = '';
            this.change_theme();
        }
    };

    this.set_theme_pref = function()
    {
    	//don't exit if demo user so demo_storage can be populated
        //if(tc.demo)
        //    return;


        if(tc.which == tc.opening_theme)
        	return
        var url_to_open = ahost+'/reminders/setprefs.pd?p=THEME&v=' + tc.which;

        var send_method = 'GET';
        var allow_async = false;
        var show_waiting = false;
        var req = new Requester(url_to_open, send_method, allow_async, show_waiting);
        req.onsuccess = tc.set_pref_success;
        req.onerror = tc.set_pref_error;
        req.sendRequest();

    };

    this.set_pref_success = function(req)
    {
        //insert processing if needed
    };

    this.set_pref_error = function(req)
    {
        //insert processing if needed
    };

    this.change_print_image = function()
    {
        try
        {
            var which_site = determine_site();
            var print_container = document.getElementById('agi-printheader');
            var print_image = print_container.getElementsByTagName('img')[1];
            print_image.src = imghost+'/'+which_site+'/reminders/theme/'+this.which+'/print_theme.jpg'
        }
        catch(e){}
    }

    // start the process
    this.do_onload();
}


// blatantly stolen from dojo for to use on BMA
function dojo_insertCssText(/* string */cssStr, /* HTMLDocument? */doc, /* string? */URI){
        //      summary
        //      Attempt to insert CSS rules into the document through inserting a style element
        // DomNode Style  = insertCssText(String ".dojoMenu {color: green;}"[, DomDoc document, dojo.uri.Uri Url ])
        if(!cssStr){
                return; //      HTMLStyleElement
        }
        if(!doc){ doc = document; }
//        if(URI){// fix paths in cssStr
//                cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
//        }
        var style = doc.createElement("style");
        style.setAttribute("type", "text/css");
        // IE is b0rken enough to require that we add the element to the doc
        // before changing it's properties
        var head = doc.getElementsByTagName("head")[0];
        if(!head){ // must have a head tag
                return; //      HTMLStyleElement
        }else{
                head.appendChild(style);
        }
        if(style.styleSheet){// IE
                var setFunc = function(){
                        try{
                                style.styleSheet.cssText = cssStr;
                        }catch(e){}
                };
                if(style.styleSheet.disabled){
                        setTimeout(setFunc, 10);
                }else{
                        setFunc();
                }
        }else{ // w3c
                var cssText = doc.createTextNode(cssStr);
                style.appendChild(cssText);
        }
        return style;   //      HTMLStyleElement
}
