function pagetools_createCookie(name, value) {
    var days = 365;
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}

function pagetools_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;
}

function pagetools_toggleShortcuts(obj) {
    if((pagetools_email_sObj = $('layout_'+pagetools+'_email')) != null) {
        pagetools_email_sObj.dispose();
    }
    
    if((pagetools_shortcuts_sObj = $('layout_'+pagetools+'_shortcuts')) == null) {
        var pagetools_shortcuts = new Element('div', {'id' : 'layout_'+pagetools+'_shortcuts'});
        
        var container = new Element('div', {'class' : 'container'}).inject(pagetools_shortcuts);
        var intro = new Element('p').set('html', '<a class="close" href="javascript:;">Close</a><a class="add" href="javascript:;">Add this page to Shortcuts</a>').inject(container);
        
        var shortcuts = ((((shortcuts = pagetools_readCookie(pagetools+'_shortcuts')) != null) && shortcuts != '') ? shortcuts.split(',') : Array());
        
        if(shortcuts.length > 0) {
            var list = new Element('ul');
            
            for(i=0; i<shortcuts.length; i++) {
                if(shortcuts[i] != '') {
                    var shortcut = Base64.decode(shortcuts[i]).split('|');
                    var item = new Element('li').set('html', '<a class="link" href="'+shortcut[1]+'" id="link_'+i+'" title="'+shortcut[0]+'">'+shortcut[0]+'</a> <a class="remove" href="javascript:;" id="remove_'+i+'">Remove</a>').inject(list);
                    
                    if((lnk_remove = item.getElement('a.remove')) != null) {
                        lnk_remove.addEvents({
                            click: function() {
                                var id = this.id.split('_');
                                if((lnk_item = this.getParent().getElement('a#link_'+id[1])) != null) {
                                    var shortcut = Base64.encode(lnk_item.title+'|'+lnk_item.pathname.substring(lnk_item.pathname.lastIndexOf('/')+1)+lnk_item.search);
                                    pagetools_removeShortcut(shortcut);
                                    
                                    if(this.getParent().getParent().getChildren().length == 1) {
                                        this.getParent().getParent().dispose();
                                    } else {
                                        this.getParent().dispose();
                                    }
                                }
                            }
                        });
                    }
                }
            }
            
            list.inject(container);
        }
        
        obj.adopt(pagetools_shortcuts);
        
        if((lnk_add = pagetools_shortcuts.getElement('a.add')) != null) {
        
    		lnk_add.addEvents({
    			click: function() {
                    var shortcuts = ((((shortcuts = pagetools_readCookie(pagetools+'_shortcuts')) != null) && shortcuts != '') ? shortcuts.split(',') : Array());
                    var title = (((title = (document.title.substring(0, document.title.lastIndexOf('-')-1))) != '') ? title : 'Homepage');
                    var link = location.pathname.substring(location.pathname.lastIndexOf('/')+1)+location.search;
                    var shortcut = Base64.encode(title+'|'+link);
                    
                    if(shortcuts.indexOf(shortcut) == -1) {
                        shortcuts.push(shortcut);
                        pagetools_createCookie(pagetools+'_shortcuts', shortcuts.join(','));
                        
                        if((list = container.getElement('ul')) == null) {
                            list = new Element('ul');
                        }
                        
                        var item = new Element('li').set('html', '<a class="link" href="'+link+'" id="link_'+list.getChildren.length+'" title="'+title+'">'+title+'</a> <a class="remove" href="javascript:;" id="remove_'+list.getChildren.length+'">Remove</a>').inject(list);
                        
                        if((lnk_remove = item.getElement('a.remove')) != null) {
                            lnk_remove.addEvents({
                                click: function() {
                                    var id = this.id.split('_');
                                    if((lnk_item = this.getParent().getElement('a#link_'+id[1])) != null) {
                                        var shortcut = Base64.encode(lnk_item.title+'|'+lnk_item.pathname.substring(lnk_item.pathname.lastIndexOf('/')+1)+lnk_item.search);
                                        pagetools_removeShortcut(shortcut);
                                        
                                        if(this.getParent().getParent().getChildren().length == 1) {
                                            this.getParent().getParent().dispose();
                                        } else {
                                            this.getParent().dispose();
                                        }
                                    }
                                }
                            });
                        }
                        
                        list.inject(container);
                    } else {
                        alert("This page is already in your shortcuts.");
                    }
                }
    		});
    	}
        
        if((lnk_close = pagetools_shortcuts.getElement('a.close')) != null) {
        
    		lnk_close.addEvents({
    			click: function() {
                    pagetools_shortcuts.dispose();
                }
    		});
    	}
    } else {
        pagetools_shortcuts_sObj.dispose();
    }
}

function pagetools_updateShortcuts(obj) {
    var shortcuts = ((((shortcuts = pagetools_readCookie(pagetools+'_shortcuts')) != null) && shortcuts != '') ? shortcuts.split(','): Array());
    
    if((spn_total = obj.getElement('span#shortcuts_total')) != null) {
        spn_total.set('text', shortcuts.length+' '+((shortcuts.length == 1) ? 'shortcut' : 'shortcuts'));
    }
}

function pagetools_addShortcut() {
    var shortcuts = ((((shortcuts = pagetools_readCookie(pagetools+'_shortcuts')) != null) && shortcuts != '') ? shortcuts.split(',') : Array());
    var shortcut = Base64.encode((document.title.substring(0, document.title.lastIndexOf('-')-1))+'|'+(location.pathname.substring(location.pathname.lastIndexOf('/')+1)+location.search));
    
    if((pagetools_email_sObj = $('layout_'+pagetools+'_email')) != null) {
        pagetools_email_sObj.dispose();
    }
    
    if((pagetools_shortcuts_sObj = $('layout_'+pagetools+'_shortcuts')) != null) {
        pagetools_shortcuts_sObj.dispose();
    }
    
    if(shortcuts.indexOf(shortcut) == -1) {
        shortcuts.push(shortcut);
        pagetools_createCookie(pagetools+'_shortcuts', shortcuts.join(','));
        alert("This page has been added to your shortcuts");
    } else {
        alert("This page is already in your shortcuts.");
    }
}

function pagetools_removeShortcut(shortcut) {
    var shortcuts = ((((shortcuts = pagetools_readCookie(pagetools+'_shortcuts')) != null) && shortcuts != '') ? shortcuts.split(',') : Array());
    var newshortcuts = Array();
    
    for(i=0; i<shortcuts.length; i++) {
        if(shortcuts[i] != shortcut) {
            newshortcuts.push(shortcuts[i]);
        }
    }
    
    pagetools_createCookie(pagetools+'_shortcuts', newshortcuts.join(','));
}

function pagetools_toggleFont(direction) {
    if((direction == 1 && pagetools_stylesheets.indexOf(pagetools_stylesheet.id) != pagetools_stylesheets.length-1) || (direction == -1 && pagetools_stylesheets.indexOf(pagetools_stylesheet.id) != 0)) {
        var stylesheet = pagetools_stylesheets[pagetools_stylesheets.indexOf(pagetools_stylesheet.id)+direction];
        new Asset.css(pagetools_css+stylesheet+'.css', {id: stylesheet});
        pagetools_stylesheet = $(stylesheet);
        
        pagetools_createCookie(pagetools+'_stylesheet', stylesheet, 365);
    }
}

function pagetools_toggleEmail(obj) {
    if((pagetools_shortcuts_sObj = $('layout_'+pagetools+'_shortcuts')) != null) {
        pagetools_shortcuts_sObj.dispose();
    }
    
    if((pagetools_email_sObj = $('layout_'+pagetools+'_email')) == null) {
        var pagetools_email = new Element('div', {'id' : 'layout_'+pagetools+'_email'});
        //var ajaxloader = new Element('img', {'src' : pagetools_dir+'ajax-loader.gif'}).inject(pagetools_email);
        obj.adopt(pagetools_email);
        
        var request = new Request.HTML({
    		url: pagetools_dir+'email.php',
    		method: 'get',
            onSuccess: function(html) {
                //pagetools_email.set('text', '');
                pagetools_email.adopt(html);
        
                if((pagetools_email_sForm = $(pagetools+'_email_form')) != null) {
                    var now = new Date();
                    pagetools_email_sForm.getElement('#security_image').src = pagetools_email_sForm.getElement('#security_image').src+'#'+now.getTime();
                    
                    if((inp_name = pagetools_email_sForm.getElement('input#name')) != null) {
                    	inp_name.addEvents({
                    		click: function() {if(this.value == "Your name") this.value = "";},
                    		blur: function() {if(this.value == "") this.value = "Your name";}
                    	});
                    }
                    if((inp_email = pagetools_email_sForm.getElement('input#email')) != null) {
                    	inp_email.addEvents({
                    		click: function() {if(this.value == "Friend's e-mail") this.value = "";},
                    		blur: function() {if(this.value == "") this.value = "Friend's e-mail";}
                    	});
                    }
                    
                    if((btn_send = pagetools_email_sForm.getElement('input.send')) != null) {
                		btn_send.addEvents({
                			click: function() {
                                if(pagetools_email_chkForm(pagetools_email_sForm)) {
                                   pagetools_email_Submit(pagetools_email_sForm);
                                }
                            }
                		});
                	}
                	if((btn_close = pagetools_email_sForm.getElement('input.close')) != null) {
                		btn_close.addEvents({
                			click: function() {
                                if((pagetools_email_sObj = $('layout_'+pagetools+'_email')) != null) {
                                    pagetools_email_sObj.dispose();
                                }
                            }
                		});
                	}
                }
            }
        }).send();
    } else {
        pagetools_email_sObj.dispose();
    }
}

function pagetools_email_chkForm(sForm) {
	var required = new Array();
	var reqcnt = 0;
	
	var errors = new Array();
	var errcnt = 0;
	
	if(sForm.name.value == "" || sForm.name.value == "Your name") {
		required[reqcnt++] = "Name: Enter your name.";
	}
	if(sForm.email.value != "" && sForm.email.value != "Friend's e-mail") {
		if((e = check_email(sForm.email.value, "E-mail")) !== true) {
			errors[errcnt++] = e;
		}
	} else {
		required[reqcnt++] = "E-mail: Enter friend's e-mail.";
	}
	if(sForm.security_code.value == "") {
		required[reqcnt++] = "Security: Enter code.";
	}
	
	return (dspRequired(required) && dspErrors(errors)) ? true : false;
}

function pagetools_email_Submit(sForm) {
	var errors = new Array();
	var errcnt = 0;
	var request = new Request.JSON({
		url: sForm.action,
        onSuccess: function(jsonObj) {
            if(jsonObj != null) {
				if(jsonObj.errors != null) {
                    jsonObj.errors.each(function(error) {
                        errors[errcnt++] = error.error;
                    });
					dspErrors(errors);
				} else {
                    alert(jsonObj.message);
                    if((pagetools_email_sObj = $('layout_'+pagetools+'_email')) != null) {
                        pagetools_email_sObj.dispose();
                    }
				}
			} else {
                alert(lang.getLang(bForm.id+'_errors_cannot_submit'));
            }
		},
        onFailure: function() {
            alert(lang.getLang(bForm.id+'_errors_cannot_submit'));
        }
	}).post({
        'name': sForm.getElement('#name').value,
        'email': sForm.getElement('#email').value,
        'message': sForm.getElement('#message').value,
        'security_code': sForm.getElement('#security_code').value,
        'op': 'email',
        'subject': document.title,
        'url': location.href
    });
    return false;
}

var pagetools = 'pagetools';
var pagetools_dir = 'themes/default/scripts/pagetools/';
var pagetools_css = 'themes/default/css/';
var pagetools_shortcuts_sObj = null;
var pagetools_stylesheets = Array('normal', 'large', 'largest'); 
var pagetools_stylesheet = null;
var pagetools_sObj = null;
var pagetools_email_sObj = null;
var pagetools_email_sForm = null;

var top_nav = 'top_nav';
var top_nav_sObj = null;
var top_nav

window.addEvent('domready', function(){
    top_nav_sObj = $('layout_'+top_nav);
    pagetools_sObj = $('layout_'+pagetools);
    
    if(top_nav_sObj != null) {
        var pagetools_shortcuts = top_nav_sObj.getElement('#'+pagetools+'_shortcuts');
        if(pagetools_shortcuts != null) {
            pagetools_shortcuts.link = pagetools_shortcuts.getElement('a');
            pagetools_shortcuts.link.addEvents({
                click: function(ev) {
                    ev = new Event(ev).stop();
                    pagetools_toggleShortcuts(pagetools_shortcuts);
    			}
            });
        }
    }
        
    if(pagetools_sObj != null) {
    	var stylesheet = (((stylesheet = pagetools_readCookie(pagetools+'_stylesheet')) != null) ? stylesheet : pagetools_stylesheets[0]);
        new Asset.css(pagetools_css+stylesheet+'.css', {id: stylesheet});
        pagetools_stylesheet = $(stylesheet);
        
    	var pagetools_addshortcut = pagetools_sObj.getElement('#'+pagetools+'_addshortcut');
        if(pagetools_addshortcut != null) {
            pagetools_addshortcut.link = pagetools_addshortcut.getElement('a');
            pagetools_addshortcut.link.addEvents({
                click: function(ev) {
                    ev = new Event(ev).stop();
                    pagetools_addShortcut();
    			}
            });
        }
    	var pagetools_biggerfont = pagetools_sObj.getElement('#'+pagetools+'_biggerfont');
        if(pagetools_biggerfont != null) {
            pagetools_biggerfont.link = pagetools_biggerfont.getElement('a');
            pagetools_biggerfont.link.addEvents({
                click: function(ev) {
                    ev = new Event(ev).stop();
                    pagetools_toggleFont(1);
    			}
            });
        }
        var pagetools_smallerfont = pagetools_sObj.getElement('#'+pagetools+'_smallerfont');
        if(pagetools_smallerfont != null) {
            pagetools_smallerfont.link = pagetools_smallerfont.getElement('a');
            pagetools_smallerfont.link.addEvents({
                click: function(ev) {
                    ev = new Event(ev).stop();
                    pagetools_toggleFont(-1);
    			}
            });
        }
        var pagetools_email = pagetools_sObj.getElement('#'+pagetools+'_email');
        if(pagetools_email != null) {
            pagetools_email.link = pagetools_email.getElement('a');
            pagetools_email.link.addEvents({
                click: function(ev) {
                    ev = new Event(ev).stop();
                    pagetools_toggleEmail(pagetools_email);
    			}
            });
        }
    }
});
