FeedoStyleWeb = {	
    CompanyName : 'Acme Inc.',
    CompanyUrl : 'http://www.acme.com',
    WebServer : 'http://www.feedostyle.com/',
    DigestServer : 'http://digest.feedostyle.com',
	timer : null,
	loginAnimation : null,
	init : function() {
		
		var images = [
			'add_btn_over.png',
			'compare_editions_btn_over.png',
			'create_yours_now_over.png',
			'faq_btn_over.png',
			'learn_more_btn_over.png',
			'login_btn_over.png',
			'online_desktops_btn_over.png',
			'overlay.png',
			'pro_help_btn_over.png',
			'pro_source_help_over.png',
			'purchase_now_over.png',
			'search_btn_over.png',
			'showcased_sites_btn_over.png'
		];
		var preload = new FeedoStyleWeb.Preloader(images);		
		preload.start();
	},
	generateButton : function() {
		var url = $F('feedBtnUrl');

		if (!FeedoStyleWeb.isValidURI(url)) {
			FeedoStyleWeb.showError('Please insert a valid feed address', 'buttonError');
			return;
		}
		
		if (url.indexOf('http://') == -1) {
			url = 'http://' + url;
		}
		
		var image = FeedoStyleWeb.WebServer + 'images/feedostyle_me_';
		if ($('goldButton').checked) {
			image += 'gold.gif';
		} else if($('whiteButton').checked) {
			image += 'black.gif';
		} else {
			image += 'black.gif';
		}
		
		var buffer = [];
		buffer.push('<!-- Feedo Style Me Button: X.1.\n');
		buffer.push('        Copyright 2009 ' + FeedoStyleWeb.CompanyName + '.\n');
		buffer.push('More info available at ' + FeedoStyleWeb.WebServer + ' -->\n');
		buffer.push('<a href="' + FeedoStyleWeb.WebServer + 'create_digest.aspx?feed=');
		buffer.push(encodeURIComponent(url));
		buffer.push('" style="border:none;"><img src="');
		buffer.push(image);
		buffer.push('" width="92" width="24" style="border:none;padding:0;margin:0;" />');
		buffer.push('</a>\n');
		buffer.push('<!-- End Feedo Style Me Button: X.1. -->');
		
		$('buttonCode').value = buffer.join('');
	},
	tryButton : function() {
		var url = $F('feedBtnUrl');
		if (!FeedoStyleWeb.isValidURI(url)) {
			FeedoStyleWeb.showError('Please insert a valid feed address', 'buttonError');
			return;
		}
		
		if (url.indexOf('http://') == -1) {
			url = 'http://' + url;
		}
		window.location.href = FeedoStyleWeb.WebServer + 'create_digest.aspx?feed=' + url;
	},
	showTooltip : function(id, event) {
		
		var x = Event.pointerX(event) - 100;
		var y = Event.pointerY(event) + 30;
		
		
		var tooltips = document.getElementsByClassName('tooltip');
		for (var i = 0; i < tooltips.length; i++) {
			if (tooltips[i].id == id) {
				continue;
			}
			tooltips[i].style.display = 'none';
		}
		
		var hideTooltip = function() {	
			$(id).style.display = 'none';
		};
		
		$(id).onclick = hideTooltip;
		
		$(id).style.left = (x - x % 16) + 'px';
		$(id).style.top = (y - y % 16) + 'px';
				
		if ($(id).style.display != 'block') {
			$(id).style.display = 'block';
		} else {
			$(id).style.display = 'none';	
		}		
	},
	goHome : function() {
		window.location.href = 'home.aspx';
	},
	goMain : function() {
		window.location.href = 'default.aspx';
	},
	goShop : function() {
		window.location.href = '/shop/';
	},
	createYours : function() {
		window.location.href = '/create_digest.aspx';
	},
	keyboardTrap : function(event, handle) {
	    if (window.event && window.event.keyCode == 13)
	    {
	    	if (handle) 
	    		handle();
	        return false;
	    } else if (event && event.keyCode==13) {
	    	if (handle) 
	    		handle();
	        event.returnValue = false;
	        return false;
	    }
	    return true;
	},
	showError : function(message, id) {
		if (!message) {
			message = 'An unexpected error occurred while processing your request. Please retry later.';
		}
		var el;
		if ($(id)) {
			el = $(id);
		} else {
			el = $('error');
		}
		
		if (!el) {
			alert(message.stripTags());
		} else {
			el.innerHTML = message;
			Element.setOpacity(el, 0);
			el.style.display = 'block';
			new Effect.Opacity(el, { 
				duration: 0.5, 
				transition: Effect.Transitions.sinoidal, 
				from: 0.0, 
				to: 1.0 
			});	
		}
	},
	hideError : function(id) {
		var el;
		if ($(id)) {
			el = $(id);
		} else {
			el = $('error');
		}
		if (el) {
			el.style.display = 'none';		
		}
	},
	saveInvoiceInformation : function() {
	    var errors = [];
	    var requiredDeclaration = '';
	    var pars = [];		
	    var isValid = true;		
    	
	    $('message').style.display = 'none';
    	
	    var checkRequired = function(field) {			
		    switch(field.id) {
			    case 'name':
				    errors.push('<li>Full Name</li>');
				    return true;
			    case 'address1':
				    errors.push('<li>Address</li>');
				    return true;									
			    case 'city':
				    errors.push('<li>City</li>');
				    return true;									
			    case 'state':
				    errors.push('<li>State</li>');
				    return true;									
			    case 'country':
				    errors.push('<li>Country</li>');
				    return true;
		    }
		    return false;
	    };
    	
	    pars.push('cback=saveInvoiceInformation&');
    	
	    var elem = Form.getElements($('editForm'));
	    for (var i = 0; i < elem.length; i++) {
		    if ((!elem[i].value || !elem[i].value.strip().length)&& checkRequired(elem[i])) {
			    isValid = false;
		    } else if (elem[i].id == 'declaration' && !elem[i].checked){
			    requiredDeclaration = '<p><strong>You must agree that all the information contained in this form is true and correct.</strong></p>';
			    isValid = false;
		    } else {
			    pars.push(elem[i].id);
			    pars.push('=');
			    pars.push(elem[i].value);
			    pars.push('&');
		    }
	    }
	    if (!isValid) {
		    var message = '';
		    if (errors && errors.length) {
			    message += 'The following fields are required:<ul>';
			    message += errors.join('');
			    message += '</ul>';
		    }
		    message += requiredDeclaration;
		    FeedoStyleWeb.showError(message);
		    return;
	    }	
    		
	    FeedoStyleWeb.hideError();
    	
	    $('save').disabled = true;
	    $('save').value = 'Updating...';	
    	
	    var completed = function(response) {
		    var result = eval('(' + response.responseText + ')');
		    if (result.isSuccessful) {	
			    Effect.Appear('message');
			    new Effect.Fade('formBody');	
		        $('save').value = 'Saved';	
		    } else{
			    FeedoStyleWeb.showError(result.error);			    
		        $('save').disabled = false;
		        $('save').value = 'Save';
		    }
	    };

	    var ajax = new Ajax.Request('default.aspx', { 
		    method: 'post', 
	        parameters: pars.join(''),
	        onSuccess:completed 
	    });
	},
	saveAccount : function() {
		var errors = [];
		var pars = [];		
		var passwordMessage = '';
		var isValid = true;		
		
		$('message').style.display = 'none';
		
		var checkRequired = function(field) {			
			switch(field.id) {
				case 'firstName':
					errors.push('<li>First Name</li>');
					return true;
				case 'lastName':
					errors.push('<li>Last Name</li>');
					return true;
				case 'email':
					errors.push('<li>Email</li>');
					return true;
			}
			return false;
		};
		
		pars.push('cback=saveAccount&');
		
		var elem = Form.getElements($('editForm'));
		for (var i = 0; i < elem.length; i++) {
			if ((!elem[i].value || !elem[i].value.strip().length)&& checkRequired(elem[i])) {
				isValid = false;
			} else if (elem[i].id == 'password1' && $F(elem[i])){
				if (!$F('password1').strip()) {
					passwordMessage = '<p><strong>You must enter a valid password.</strong></p>';
					isValid = false;
				}
				else if ($F('password1').strip().length < 5) {
					passwordMessage = '<p><strong>The password must be at least 5 characters long.</strong></p>';
					isValid = false;
				}
				else if (!$F('password2').strip()) {		
					passwordMessage = '<p><strong>You must confirm the chosen password.</strong></p>';
					isValid = false;
				}
				else if ($F('password1') != $F('password2')) {		
					passwordMessage = '<p><strong>The password and the confirmation don\'t match.</strong></p>';
					isValid = false;
				} else {
					pars.push(elem[i].id);
					pars.push('=');
					pars.push(elem[i].value);
					pars.push('&');
				}
			} else {
				pars.push(elem[i].id);
				pars.push('=');
				pars.push(elem[i].value);
				pars.push('&');
			}
		}
		if (!isValid) {
			var message = '';
			if (errors && errors.length) {
				message += 'The following fields are required:<ul>';
				message += errors.join('');
				message += '</ul>';
			}
			message += passwordMessage;
			FeedoStyleWeb.showError(message);
			return;
		}	
		
		var email = $F('email').strip();
		
	    var emailRegex = /^[\w\d]+((-[\w\d]+)|(\.[\w\d]+)|(_[\w\d]+))*\@[\d\w]+((\.|-)[\w\d]+)*\.[\d\w]+$/i;
		if (!emailRegex.test($F('email')) || email.length < 8){
			FeedoStyleWeb.showError('Please insert a valid email address.');
			return;
		}
		
		FeedoStyleWeb.hideError();
		
		$('save').disabled = true;
		$('save').value = 'Updating...';	
		
		var completed = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {	
				$('changePassword').style.display = 'none';
				Effect.Appear('message');				
				//$('message').style.display = 'block';
				$('password1').value = '';
				$('password2').value = '';
			} else{
				FeedoStyleWeb.showError(result.error);
			}
			$('save').disabled = false;
			$('save').value = 'Save';
			
		};

		var ajax = new Ajax.Request('default.aspx', { 
			method: 'post', 
		    parameters: pars.join(''),
		    onSuccess:completed 
		});
	},
		createAccount : function() {
		var errors = [];
		var requiredTerms = '';
		var url = '/account.aspx';
		var pars = [];		
		var isValid = true;		
		
		$('forgotPass').style.display = 'none';
		
		var checkRequired = function(field) {			
			switch(field.id) {
				case 'firstName':
					errors.push('<li>First Name</li>');
					return true;
				case 'lastName':
					errors.push('<li>Last Name</li>');
					return true;
				case 'email':
					errors.push('<li>Email</li>');
					return true;
			}
			return false;
		};
		
		var elem = Form.getElements($('editForm'));
		for (var i = 0; i < elem.length; i++) {
			if ((!elem[i].value || !elem[i].value.strip().length)&& checkRequired(elem[i])) {
				isValid = false;
			} else if (elem[i].id == 'terms' && !elem[i].checked){
				requiredTerms = '<p><strong>You must agree to the Terms of Service and Privacy Policy.</strong></p>';
				isValid = false;
			} else {
				pars.push(elem[i].id);
				pars.push('=');
				pars.push(elem[i].value);
				pars.push('&');
			}
		}
		if (!isValid) {
			var message = '';
			if (errors && errors.length) {
				message += 'The following fields are required:<ul>';
				message += errors.join('');
				message += '</ul>';
			}
			message += requiredTerms;
			FeedoStyleWeb.showError(message);
			return;
		}	
		
		var email = $F('email').strip();
		
	    var emailRegex = /^[\w\d]+((-[\w\d]+)|(\.[\w\d]+)|(_[\w\d]+))*\@[\d\w]+((\.|-)[\w\d]+)*\.[\d\w]+$/i;
		if (!emailRegex.test($F('email')) || email.length < 8){
			FeedoStyleWeb.showError('Please insert a valid email address.');
			return;
		}
		
		FeedoStyleWeb.hideError();
		
		$('save').disabled = true;
		$('save').value = 'Processing...';		
		
		var completed = function(response) {
		
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {
				if (typeof urchinTracker != 'undefined'){
					urchinTracker('goals/createAccount');
				}

				var showConfirm = function() {
					Element.setOpacity('message', 0);
					$('message').style.display = 'block';
					new Effect.Opacity('message', { 
						duration: 0.5, 
						transition: Effect.Transitions.sinoidal, 
						from: 0.0, 
						to: 1.0 
					});	
					
					$('save').disabled = false;
					$('save').value = 'Save';
				};
				
				if($F('PlanType') == 'Community')
				{
				    Effect.Fade('contactFields', { 
					    duration: 0.4,
					    afterFinish: showConfirm
				    });
				}
				else
				{
				    $('editForm').action = '/shop/checkout.aspx';
				    $('editForm').onsubmit = null;
				    $('editForm').submit();
				}
				
			} else {
				if (result.isDuplicate) {
					var message = 'An account with this email address already exists. <br />If you forgot your password, <a href="#" onclick="FeedoStyleWeb.toggleReminder();return false;">click here</a> to reset it.'
				} else {
					var message = 'An error occurred while processing your request, please retry.';
				}
				FeedoStyleWeb.showError(message);
				$('save').disabled = false;
				$('save').value = 'Save';
			}			
		};

		var ajax = new Ajax.Request(url, { 
			method: 'post', 
		    parameters: pars.join(''),
		    onSuccess:completed 
		});
	},
	sendContact : function() {		
		var errors = [];
		var url = '/contact.aspx';
		var pars = [];		
		var isValid = true;
		
		var checkRequired = function(field) {			
			switch(field.id) {
				case 'commentBody':
					errors.push('<li>Comment/Question/Request</li>');
					return true;
				case 'name':
					errors.push('<li>Name</li>');
					return true;
				case 'email':
					errors.push('<li>Email</li>');
					return true;
			}
			return false;
		}
		
		var elem = Form.getElements($('contact'));
		for (var i = 0; i < elem.length; i++) {
			if (!elem[i].value && checkRequired(elem[i])) {
				isValid = false;
			} else {
				pars.push(elem[i].id);
				pars.push('=');
				pars.push(elem[i].value);
				pars.push('&');
			}
		}
		if (!isValid) {
			var message = 'The following fields are required:<ul>';
			message += errors.join('');
			message += '</ul>';
			FeedoStyleWeb.showError(message);
			return;
		}	
		FeedoStyleWeb.hideError();
		
		pars.push('&cback=contact');		
		$('send').disabled = true;
		$('send').value = 'Processing...';
		
		var completed = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {			
				var showConfirm = function() {
					Element.setOpacity('message', 0);
					$('message').style.display = 'block';
					new Effect.Opacity('message', { 
						duration: 0.5, 
						transition: Effect.Transitions.sinoidal, 
						from: 0.0, 
						to: 1.0 
					});			
					$('send').disabled = false;
					$('send').value = 'Send';
				};
				
				Effect.Fade('contactFields', { 
					duration: 0.4,
					afterFinish: showConfirm
				});
			} else {
				var message = 'An error occurred while processing your request, please retry.';
				FeedoStyleWeb.showError(message);						
				$('send').disabled = false;
				$('send').value = 'Send';
			}
		};
		var ajax = new Ajax.Request(url, { 
			method: 'post', 
		    parameters: pars.join(''),
		    onSuccess:completed 
		});
	},
	logout : function() {
		var url = 'default.aspx';
	    var pars = 'cback=logout&seed=' + Math.floor(Math.random()*999999);
	    
        var ajax = new Ajax.Request(url, { 
            method: 'post', 
            parameters: pars,
            onSuccess: function(){
            	window.location.href = 'default.aspx';
            } 
        });
	},
	login : function() {
		$('holder1').appendChild($('error'));
		var username = $F('username').strip().replace(/[<>]+/gi, '');
		var password = $F('password').strip().replace(/[<>]+/gi, '');
		
		if (!username || !password) {
			var message = 'The following fields are required:<ul>';
			if (!username) {
				message += '<li>Email</li>';
			}
			if (!password) {
				message += '<li>Password</li>';
			}
			message += '</ul>';
			FeedoStyleWeb.showError(message);
 
			return false;
		}
		var validateLogin = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {
				//window.location.href = result.page;
				$('loginForm').action = result.page;
				$('loginForm').submit();
			} else {
				FeedoStyleWeb.showError('Invalid username or password. Please try again.'); 
				$('password').value = '';
			    $('loginBtn').disabled = false;
			    $('loginBtn').value = 'Login';	 
			    return false;
			}
		};
		var loadError = function() {
			FeedoStyleWeb.showError('An unexpected error occurred. Please try again.');
		    $('loginBtn').disabled = false;
		    $('loginBtn').value = 'Login';	
		};

		var url = window.location.href;
	    var pars = 'cback=login&username=' + username + '&password=' + password + '&seed=' + Math.floor(Math.random()*999999);
	    
	    $('loginBtn').disabled = true;
	    $('loginBtn').value = 'Validating...';	    	    
   
        var ajax = new Ajax.Request(url, { 
            method: 'post', 
            parameters: pars,
            onFailure: loadError,
            onSuccess: validateLogin });

	},
	loginFromBanner : function() {
		var username = $F('username').strip().replace(/[<>]+/gi, '');
		var password = $F('password').strip().replace(/[<>]+/gi, '');	
		var delay = 500;
		
		if (FeedoStyleWeb.timer) {
			window.clearTimeout(FeedoStyleWeb.timer);
		}
		
		if (FeedoStyleWeb.loginAnimation) {
			FeedoStyleWeb.loginAnimation.cancel();
		}
		
		if (!username && !password) {
			window.location.href = 'login.aspx';
		}
		
		var showLogin = function() {
			Element.setOpacity('loginStatus', 0);
			$('loginStatus').style.display = 'block';		
			FeedoStyleWeb.loginAnimation = new Effect.Opacity('loginStatus', { 
				duration: 0.5, 
				transition: Effect.Transitions.sinoidal, 
				from: 0.0, 
				to: 1.0 
			});	
		};
		var hideLogin = function() {
			Element.setOpacity('loginStatus', 1.0);
			$('loginStatus').style.display = 'block';		
			FeedoStyleWeb.loginAnimation = new Effect.Opacity('loginStatus', { 
				duration: 0.5, 
				transition: Effect.Transitions.sinoidal, 
				from: 1.0, 
				to: 0.0 
			});	
		};
		
		if ($('loginStatus').style.display != 'block') {
			delay += 1000;
			showLogin();
		} else {
			Element.setOpacity('loginStatus', 1.0);
		}
		
		if (!username || !password) {
			$('loginMessage').innerHTML = 'Please insert email and password.';
			$('loginMessage').className = 'warning';
			$('username').value = username;
			$('password').value = password;
			FeedoStyleWeb.timer = window.setTimeout(hideLogin, 2500);
			return;
		} else {
			$('loginMessage').innerHTML = 'Authenticating...';
			$('loginMessage').className = 'loading';			
		}
		
		var loadError = function() {
			$('loginMessage').innerHTML = 'An unexpected error occurred. Please try again.';
			FeedoStyleWeb.timer = window.setTimeout(hideLogin, 2500);
		};
		var validateLogin = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {
				window.location.href = 'home.aspx';
			} else {
				$('loginMessage').innerHTML = 'Invalid email or password. <a href="/login.aspx">Forgot your password?</a>';
				$('loginMessage').className = 'error';	
				FeedoStyleWeb.timer = window.setTimeout(hideLogin, 2500);
			}
		};
		
		var authenticate = function() {	
			var url = 'default.aspx';
		    var pars = 'cback=login&username=' + username + '&password=' + password + '&seed=' + Math.floor(Math.random()*999999);
		    
	        var ajax = new Ajax.Request(url, { 
	            method: 'post', 
	            parameters: pars,
	            onFailure: loadError,
	            onSuccess: validateLogin });
		};
		FeedoStyleWeb.timer = window.setTimeout(authenticate, delay);
	},
	appendToHead : function(element) {
		if (!element) {
			return;
		}
		try {
		    if (document.documentElement && document.documentElement.childNodes) {
		    	var head = document.documentElement.childNodes[0];
		        if (element.id && head.childNodes) {
		            for (var i = 0; i < head.childNodes.length; i++) {
		                if (head.childNodes[i].id == element.id) {              	
		                    head.removeChild(head.childNodes[i]);
		                }
		            }
		        }
		        head.appendChild(element);     
		    }
		    else {
		    	var head = document.getElementsByTagName('head');
		    	if (head.length > 0){
		    		head[0].appendChild(element);
		    	} else {
		    		document.getElementsByTagName('body')[0].appendChild(element);
		    	}
		    }
		} catch(ex) {}
	},
	initWizard : function() {
		if (!$('wizard')) {
			return;
		}
		if (!$('step0') && !$F('feedUri')) {
			$('step1').style.display = 'block';
			$('step1Label').innerHTML = 'Step 1:';
			$('step2Label').innerHTML = 'Step 2:';
			$('step3Label').innerHTML = 'Step 3:';
		} else if($F('feedUri')) {
			if ($('step0')) {
				$('step0').style.display = 'none';
			}
			$('step1').style.display = 'none';
			$('step2').style.display = 'block';
			$('step3Label').innerHTML = 'Finish:';
			$('fullpreviewTop').disabled = true;
			$('fullpreviewBottom').disabled = true;
			$('saveDigest').disabled = true;
			$('loadingFeed').style.display = 'block';
			FeedoStyleWeb.createDigest();		
		} else {
			$('step1Label').innerHTML = 'Step 2:';
			$('step2Label').innerHTML = 'Step 3:';
			$('step3Label').innerHTML = 'Step 4:';
		}
		
		
		$('predefined').checked = false;
		$('custom').checked = false;
		$('publisherList').selectedIndex = -1;
		
		var showPredefined = function() {
			$('customSource').style.display = 'none';
			Effect.Appear('predefinedSource', {duration:0.4});
		};
		var showCustom = function() {
			$('predefinedSource').style.display = 'none';
			Effect.Appear('customSource', {duration:0.4});
		};
		var showFeeds = function() {
			Effect.Appear('feedList', {duration:0.4});
			var selectedPublisher = $F('publisherList');
			
			for (var i = 0; i < $('publisherList').length; i++) {
				var value = $('publisherList')[i].value;
				if($('feeds' + value)) {
					$('feeds' + value).style.display = 'none';
				}
			}
			$('feeds' + selectedPublisher).style.display = 'block';			
		};
		
		Event.observe($('predefined'), 'click', showPredefined, false);
		Event.observe($('custom'), 'click', showCustom, false);	
		Event.observe($('publisherList'), 'click', showFeeds, false);	
		
		if ($('selecedFeedList').innerHTML.strip().length > 0) {
			$('selectedFeeds').style.display = 'block';
			$('nextBtn').disabled = false;
		}
	},
	feedAdded : function(feedUrl) {
		var addedFeed = document.getElementsByClassName('feedUrl', 'selecedFeedList');
		
		if (addedFeed) {
			for (var i = 0; i < addedFeed.length; i++) {
			var existingURI = addedFeed[i].innerHTML.replace(/&amp;/gi,'&');
			if (decodeURI(unescape(existingURI.strip())) == decodeURI(unescape(feedUrl).strip())) {
					FeedoStyleWeb.showError('The selected feed is already in your list');
					return true;
				}
			}
		}
		return false;
	},
	refererAdded : function(url) {
		var addedReferers = document.getElementsByClassName('refererUrl', 'allowedReferersList');
		if (addedReferers) {
			for (var i = 0; i < addedReferers.length; i++) {
				if (addedReferers[i].innerHTML.strip() == url.strip()) {
					FeedoStyleWeb.showError('The selected referer is already in your list');
					return true;
				}
			}
		}
		return false;
	},
	addSelectedFeed : function(feedName, feedUrl) {
	
		var maxFeeds = parseInt($F('feedCount'));
		var feedCount = $('selecedFeedList').getElementsByTagName('li');
		if (feedCount.length >= maxFeeds) {
			var message = '';
			var plural = '';
			if (maxFeeds > 1)
				plural = 's';
			if ($F('currentPlan') == 'None') {				
				message = 'You can only add ' + maxFeeds + ' feed' + plural + ' per digest.';
				message += ' <a href="/compare_plans.aspx">Upgrade</a> to enable multi-feed digests.';
			} else {
				message = 'Your plan supports only ' + maxFeeds + ' feed' + plural + ' per digest.';
				message += ' <a href="/shop/">Upgrade</a> to enable multi-feed digests.';
			}
			FeedoStyleWeb.showError(message);
			if ($('feedScraper'))
				$('feedScraper').style.display = 'none';
			return;
		}
		$('feedScraper').style.display = 'none';	
		var buffer = [];
		buffer.push('<li>');
		buffer.push('<p style="display:none;" class="feedUrl">');
		buffer.push(feedUrl);
		buffer.push('</p><a href="#" onclick="FeedoStyleWeb.deleteFeed(\'');
		buffer.push(escape(feedUrl));
		buffer.push('\');return false;"><img alt="Delete" height="16" src="images/cross.gif" title="Delete Feed" width="16" /></a> ');
		buffer.push(feedName.replace(/&amp;/g,'&'));
		buffer.push(' <span>');
		buffer.push(feedUrl);
		buffer.push('</span></li>');
		
		$('selecedFeedList').innerHTML += buffer.join('');
		Effect.Appear('selectedFeeds', {duration:0.4});
		$('nextBtn').disabled = false;
	},
	addSelectedReferer : function(url, id) {	
		var buffer = [];
		buffer.push('<li id="referer_');
		buffer.push(id);
		buffer.push('">');
		buffer.push('<p style="display:none;" class="refererUrl">');
		buffer.push(url);
		buffer.push('</p><a href="#" onclick="FeedoStyleWeb.deleteReferer(');
		buffer.push(id);
		buffer.push(');return false;"><img alt="Delete" height="16" src="images/cross.gif" title="Delete Delete allowed Website" width="16" /></a> ');
		buffer.push(url);
		buffer.push('</li>');
		
		$('allowedReferersList').innerHTML += buffer.join('');
		Effect.Appear('allowedReferers', {duration:0.4});
	},
	addPredefinedFeed : function() {		
		var selectedPublisher = $F('publisherList');
		if (!selectedPublisher) {
			FeedoStyleWeb.showError('Please select a publisher from the list');
			return;
		}
		var selectedFeed = $('feeds' + selectedPublisher).selectedIndex;
		if (selectedFeed == -1) {
			FeedoStyleWeb.showError('Please select a feed from the list');
			return;
		}
		
		var feedUrl = $F('feeds' + selectedPublisher);
		var feedName = $('feeds' + selectedPublisher)[selectedFeed].innerHTML;
		
		if (FeedoStyleWeb.feedAdded(feedUrl)) {
			return;
		}
		
		FeedoStyleWeb.addSelectedFeed(feedName, feedUrl);
	},
	isValidURI : function(uri) {
		if (!uri){
			return false;
		}
		
		// Remove trailing spaces
		if (uri.indexOf('://') == -1) {
			uri = 'http://' + uri;
		}
		
		// check if the uri is non empty and long at least 10 characters
		if (!uri || uri.length < 10) {
			return false;
		}	    
	    
	    // perform a final simple validation against the url 
	    var urlRegex = /^http(s?):\/\/([\w\d-_]+\.?)+(\/.*)*$/i;
	    if (!urlRegex.test(uri)) {
	        return false;
	    }
	    
	    if (uri.indexOf('.') == -1) {
	        return false;
	    }
	    
	    return true;
	},
	addReferer : function() {
		
		var url = $F('url').strip();
		if (!url) {
			FeedoStyleWeb.showError('Please insert the address of a website');
			return;
		}
		if (!FeedoStyleWeb.isValidURI(url)) {
			FeedoStyleWeb.showError('Please insert a valid address');
			return;
		}
		
		if (!(url.indexOf('http://') == 0 || url.indexOf('https://') == 0)) {
			url = 'http://' + uri;
		}

		
		if (FeedoStyleWeb.refererAdded(url)) {
			return;
		}
		
		// Validate referer
	    var pars = 'cback=validateReferer&url=' + encodeURIComponent(url) + '&seed=' + Math.floor(Math.random()*999999);
	    
	    $('addBtn').disabled = true;
	    $('addBtn').value = 'Validating...';	    
	    
	    var addReferer = function (response) { 
		    $('addBtn').disabled = false;
		    $('addBtn').value = 'Add';
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {	
				$('url').value = '';
				FeedoStyleWeb.addSelectedReferer(decodeURIComponent(result.cleanUrl), result.id);				
			} else {
				FeedoStyleWeb.showError(result.error);
			}
	    };
	    
	    FeedoStyleWeb.hideError();
	    
        var ajax = new Ajax.Request('default.aspx', { 
            method: 'post', 
            parameters: pars,
            onFailure : function() {
				FeedoStyleWeb.showError();
			    $('addBtn').disabled = false;
			    $('addBtn').value = 'Add';
            },
            onSuccess: addReferer
        });		
	},
	addCustomFeed : function() {		
		var feedUrl = $F('url').strip();
		if (!feedUrl) {
			FeedoStyleWeb.showError('Please insert the address of a feed');
			return;
		}
		if (!FeedoStyleWeb.isValidURI(feedUrl)) {
			FeedoStyleWeb.showError('Please insert a valid feed address');
			return;
		}
		
		if (feedUrl.indexOf('://') == -1) {
			feedUrl = 'http://' + feedUrl;
		}
		
		if (FeedoStyleWeb.feedAdded(feedUrl)) {
			return;
		}
		
		// Validate feed
		var url = 'default.aspx';
	    var pars = 'cback=validateFeed&url=' + encodeURIComponent(feedUrl) + '&seed=' + Math.floor(Math.random()*999999);
	   
	    $('addBtn').disabled = true;
	    $('addBtn').value = 'Validating...';	    
	    
	    var addFeed = function (response) { 
	    
			var result = eval('(' + response.responseText + ')');
			
			if (result.isSuccessful) {	
				if (result.feeds.length == 1) {
					$('url').value = '';
					var feed = result.feeds[0];
					
					feed.title = feed.title;
					feed.title = decodeURIComponent(feed.title);
				
					feed.title = feed.title.replace(/\+/gi, ' ');
					FeedoStyleWeb.addSelectedFeed(feed.title, feed.url);
				} else {	
					$('feedScraper').style.display = 'block';	
					Event.observe('feedScraper', 'click', function() {
						$('feedScraper').style.display = 'none';						
					}, false);			
					$('feedScraper').style.top = ($('url').offsetTop + $('url').offsetHeight) + 'px';
					$('feedScraper').style.left = $('url').offsetLeft + 'px';
					$('scraperList').innerHTML = '';
					for (var i = 0; i < result.feeds.length; i++) {
						var feed = result.feeds[i];
						feed.url = decodeURIComponent(feed.url);
						
						feed.title = unescape(feed.title);
						feed.title = feed.title.replace(/\+/gi, ' ');
						var link = [];
						link.push('<li><a href="#" onclick="FeedoStyleWeb.addSelectedFeed(\'');
						link.push(feed.title);
						link.push('\',\'');
						link.push(feed.url);
						link.push('\');return false;">');
						link.push(feed.title);
						link.push(' <span>(');
						link.push(feed.url);
						link.push(')</span>');
						link.push('</a>');
						link.push('</li>');
						$('scraperList').innerHTML += link.join('');				    
					}
				}
			} else {
				FeedoStyleWeb.showError(result.error);
			}
		    $('addBtn').disabled = false;
		    $('addBtn').value = 'Add';
			$('validateFeed').style.display = 'none';
	    };
	    
	    Effect.Appear('validateFeed');
	    FeedoStyleWeb.hideError();
	    
        var ajax = new Ajax.Request(url, { 
            method: 'post', 
            parameters: pars,
            onFailure : function() {
				FeedoStyleWeb.showError();
				$('validateFeed').style.display = 'none';
			    $('addBtn').disabled = false;
			    $('addBtn').value = 'Add';
            },
            onSuccess: addFeed
        });		
	},
	deleteFeed : function(feedUrl) {
	//feedUrl = decodeURIComponent(feedUrl);
		var addedFeed = document.getElementsByClassName('feedUrl', 'selecedFeedList');
		if (addedFeed) {
			if (addedFeed.length == 1) {
				Effect.Fade('selectedFeeds', {
					duration:0.4,
					afterFinish: function() {$('selecedFeedList').innerHTML = ''; }
				});
				$('nextBtn').disabled = true;
			} else {
				for (var i = 0; i < addedFeed.length; i++) {
				var existingFeed = addedFeed[i].innerHTML.strip().replace(/&amp;/ig,'&');
					if (existingFeed == feedUrl.strip()) {
						$('selecedFeedList').removeChild(addedFeed[i].parentNode);					
					}
				}
			}
		}
	},
	createDigest : function() {
		var uri = $F('feedUri');
		var cid = $F('cid');
		
	    var done = function (response) { 
			var result = eval('(' + response.responseText + ')');
			$('loadingFeed').style.display = 'none';
			if (result.isSuccessful) {	
				$('saveDigest').disabled = false;
				$('fullpreviewTop').disabled = false;
				$('fullpreviewBottom').disabled = false;
				window.feedostyle_id = FeedoStyle.parseId(result.id);
				window.feedostyle_no_render = false;
				window.feedostyle_parent_element='feedostyleHook';
				
				var settings = FeedoStyleWeb.Demo.getSettings();				
				settings.id = FeedoStyle.parseId(result.id);
				//FeedoStyle.redraw(settings.id, settings);
				FeedoStyle.CreateFeedoStyle(settings);
			} else {
				FeedoStyleWeb.showError(result.error, 'error2');		
			}
		};
		
    	var pars= 'cback=createDigest&url=' + encodeURIComponent(uri) 
    		+ '&cid=' + cid
    		+ '&seed=' + Math.floor(Math.random()*999999);
		new Ajax.Request('default.aspx', { 
	        method: 'post', 
	        parameters: pars,
	        onFailure : function() {
				FeedoStyleWeb.showError();
	        },
	        onSuccess: done
	    });	
	},
	validateDigestName : function() {
		var digestName = $F('digestName').strip();
		FeedoStyleWeb.hideError('error0');
		if (!digestName) {
			FeedoStyleWeb.showError('Please enter a digest name.', 'error0');
		}
		
		FeedoStyleWeb.goStep1();
	},
	
	reloadSettings : function(cid)	{
	    
	       var completed = function(response) {
       
		   var result = eval('(' + response.responseText + ')'); 
		   
           if ($('digestTitle'))
			    $('digestTitle').value = result.title;
			    
			if(result.format == FeedoStyle.DigestFormats.VERTICAL_MARQUEE)
			{
			    $('formatScrolling').checked = true;
			}else
			{
			    $('formatStatic').checked = true;
			}
			
			if ($('digestSubtitle'))
			    $('digestSubtitle').value = result.subtitle;
			    
			if(result.showCaption==false)
			    
			if ($('captionNo'))
			    $('captionNo').checked = result.showCaption==false?true:false;
			    
		    if ($('dateNo')) 
		        $('dateNo').checked = result.showDate==false?true:false;
		
		    if ($('summaryNo'))
		        $('summaryNo').checked = result.showSummary==false?true:false; 
		
		    if ($('sourceNo'))
		        $('sourceNo').checked = result.showSource==false?true:false;
		
		    if ($('copyrightNo'))
		        $('copyrightNo').checked = result.showCopyright==false?true:false;
		        
		    if ($('roundedNo'))
		       $('roundedNo').checked = result.roundedCorners==false?true:false;
		    
		    if ($('pauseTime'))
		        $('pauseTime').value = result.pauseTime;
		    
		    if ($('fontSize'))
		        $('fontSize').value = result.fontSize;
		    
		     if ($('fontFamily'))
		        $('fontFamily').value = result.fontFamily;
		        
		    if($('digestWidth'))
		        $('digestWidth').value = result.width;
		        
		    if($('digestHeight'))
		        $('digestHeight').value = result.height;
		    
		    if ($('pageBackgroundColor'))
		        $('pageBackgroundColor').value = result.pageBackgroundColor;
		   
		    if ($('footerNo'))
			    $('footerNo').checked = result.hideFooter==true?true:false;
    		
		    if ($('captionTitleColor'))
			    $('captionTitleColor').value = result.captionTitleColor.replace('#','');
    						
		    if ($('captionSubtitleColor'))
			    $('captionSubtitleColor').value = result.captionSubtitleColor.replace('#','');
    			
		    if ($('foregroundColor'))
			    $('foregroundColor').value = result.foregroundColor.replace('#','');
    			
		    if ($('linkColor'))
			    $('linkColor').value = result.linkColor.replace('#','');
    			
		    if ($('backgroundColor'))
			    $('backgroundColor').value = result.backgroundColor.replace('#','');
    			
		    if ($('borderColor'))
			    $('borderColor').value = result.borderColor.replace('#','');
    		
		    if ($('summaryLength'))
			    $('summaryLength').value = result.summaryLength;
    		
		      /*if(!isNaN(result.entryCount))
		      {
		        if($('entryCount'))
		        {
		            $('entryCount').value = result.entryCount==0?'5':result.entryCount;
		            $('entryCount').value = "5";
		        }
		      }*/
    		
		    if ($('digestSpacing'))
			    $('digestSpacing').value = result.entrySpacing;
    			
		    if ($('collapseNo'))
			    $('collapseNo').checked = result.collapseOverflow==false?true:false;
    			
	        if ($('windowNo'))
			    $('windowNo').checked = result.newWindowLinks==false?true:false;
			
			var index = 0;
			
			for(var i=0;i<FeedoStyleWeb.Demo.themes.length;i++)
			{
			    if(FeedoStyleWeb.Demo.themes[i].code==result.theme)
			    {
			        break;
			    }
			    
			    index += 1;
			}
			
			FeedoStyleWeb.Demo.selectTheme(index);
	}
       
       var pars= 'cback=reloadSettings&cid=' + cid + '&seed=' + Math.floor(Math.random()*999999);
    		
	    var ajax = new Ajax.Request('default.aspx', { 
	        method: 'post', 
	        parameters: pars,
	        onSuccess:completed });
	},
	
	addDigestSources : function() {
		var addedFeed = document.getElementsByClassName('feedUrl', 'selecedFeedList');
		if (addedFeed && addedFeed.length > 0) {
			feeds = [];
			for (var i = 0; i < addedFeed.length; i++) {
				feeds.push(addedFeed[i].innerHTML);
				feeds.push('*');
			}
	   		$('nextBtn').disabled = true;
	   		$('nextBtn').value = 'Generating Digest...';
	   		
		    Effect.Appear('loadStep2');
		    FeedoStyleWeb.hideError();
		    
		    var done = function (response) { 
				var result = eval('(' + response.responseText + ')');
				if (result.isSuccessful) {	
					$('step1').style.display = 'none';
					$('step2').style.display = 'block';
					if (!window.feedostyle_id) {	
						window.feedostyle_id = FeedoStyle.parseId(result.id);
						window.feedostyle_no_render = false;
						window.feedostyle_parent_element='feedostyleHook';
						
						var settings = FeedoStyleWeb.Demo.getSettings();				
						settings.id = FeedoStyle.parseId(result.id);
						//FeedoStyle.redraw(settings.id, settings);
						FeedoStyle.CreateFeedoStyle(settings);
						
						if(window.feedostyle_id)
						    FeedoStyleWeb.reloadSettings(window.feedostyle_id);
						    
					} else {
						FeedoStyleWeb.Demo.reloadDigest();						
					}
				} else {
					FeedoStyleWeb.showError(result.error);
				}
			    $('nextBtn').disabled = false;
			    $('nextBtn').value = 'Next';
				$('loadStep2').style.display = 'none';
		    };
		    
			var url = 'default.aspx';
	    	var pars = 'cback=addSources&urls=' + encodeURIComponent(feeds.join('')) 
	    		+ '&seed=' + Math.floor(Math.random()*999999);
	    	
	    	
	    	if ($('digestName')) {
		    	pars += '&name=';
		    	pars += encodeURIComponent($F('digestName'));
	    	}
	    	
	    	if ($F('digestId')) {
	    		pars += '&id=' + $F('digestId');
	    	}
	    	
	    	if (window.feedostyle_id) {
	    		pars += '&id=' + window.feedostyle_id;
	    	}
	    	if ($F('customerId')) {
	    		pars += '&cid=' + $F('customerId');
	    	}
	    	
	    	
	        var ajax = new Ajax.Request(url, { 
	            method: 'post', 
	            parameters: pars,
	            onFailure : function() {
					FeedoStyleWeb.showError();
					$('loadStep2').style.display = 'none';					
			   		$('nextBtn').disabled = false;
			   		$('nextBtn').value = 'Next';
	            },
	            onSuccess: done
	        });	
	        
		} else {
			FeedoStyleWeb.showError('Please add at least one feed before proceding.');
		}
	},
	goStep0 : function() {
		$('feedScraper').style.display = 'none';
		$('step0').style.display = 'block';
		$('step1').style.display = 'none';
		$('loadStep2').style.display = 'none';
	},
	goStep1 : function() {
		if (typeof urchinTracker != 'undefined'){
			urchinTracker('goals/createDigest1');
		}
		$('feedScraper').style.display = 'none';
		if ($('step0')) {
			$('step0').style.display = 'none';
		}
		$('step1').style.display = 'block';
		$('step2').style.display = 'none';
		$('loadStep2').style.display = 'none';
	},
	goStep2 : function() {
		if (typeof urchinTracker != 'undefined'){
			urchinTracker('goals/createDigest2');
		}
		$('step2').style.display = 'block';
		$('step3').style.display = 'none';
	},
	closeCode : function() {		
		Effect.Fade('codeBox', {
			afterFinish: function() {
				$('codeContent').value = '';
			}
		});
	},
	viewCode : function(id) {		
		var printCode = function(response) { 			
			var result = eval('(' + response.responseText + ')');
			if (!result) {
				FeedoStyleWeb.showError();
				return;
			}
			
			var settings = result;	
		    var code = [];
			code.push('<!-- Feedo Style code version: X.1.\n');
			code.push('        Copyright 2009 ' + FeedoStyleWeb.CompanyName + '.\n');
			code.push('More info available at ' + FeedoStyleWeb.WebServer + ' -->\n');
			code.push('<script type="text/javascript">\n');
			code.push('//<![CDATA[\n\n');		
	    	
			if (settings.isSuccessful != false) {
		    	for (var setting in settings) {
					var value = setting.replace(/([A-Z])/g, '_$1');
					value = 'feedostyle_' + value.toLowerCase();
					
					code.push(value);
					code.push(' = ');
					
					value = settings[setting];
					if (typeof value == 'string') {
						value = value.strip();
						
						code.push('"');
						code.push(value);
						code.push('"');
					} else {
						code.push(value);
					}
					
					code.push(';\n');
		    	}
			} else {
				
			}
			
			code.push('\n//]]>\n');
			code.push('</script>\n');
		    code.push('<script type="text/javascript" src="' + FeedoStyleWeb.DigestServer + '/feedostyle.js');
		    code.push('"></script>\n');
			code.push('<!-- End Feedo Style code version: X.1. -->');
    		$('codeContent').value = code.join('');
		};
		
    	var pars = 'cback=getSettings&id=' + id 
    		+ '&seed=' + Math.floor(Math.random()*999999);	    		
        var ajax = new Ajax.Request('default.aspx', { 
            method: 'post', 
            parameters: pars,
            onFailure : function() {
				FeedoStyleWeb.showError();
            },
            onSuccess: printCode
        });
		
		Effect.Appear('codeBox');
	},
	saveDigest : function() {		
		if (!window.feedostyle_id) {
			return;
    	}	
    	
   		$('saveDigest').disabled = true;
	   	$('saveDigest').value = 'Saving Digest...';
	   		
	    Effect.Appear('saveDigestBox');
	    
	    FeedoStyleWeb.hideError();
    	
		var settings = FeedoStyleWeb.Demo.getSettings(true);
		
    	var pars = [];
    	pars.push('cback=saveDigest');
    	
    	pars.push('&seed=');
    	pars.push(Math.floor(Math.random()*999999));
    	
    	/*if ($F('customerId')) {
	    	pars.push('&cid=');
	    	pars.push($F('customerId'));
    	}*/
    	
	    var code = [];
		code.push('<!-- Feedo Style code version: X.1.\n');
		code.push('        Copyright 2005-2009 ' + FeedoStyleWeb.CompanyName + '.\n');
		code.push('More info available at ' + FeedoStyleWeb.WebServer + ' -->\n');
		code.push('<script type="text/javascript">\n');
		code.push('//<![CDATA[\n\n');		
    	
    	for (var setting in settings) {
    		pars.push('&');
			pars.push(setting);
			pars.push('=');
			
			
			var value = setting.replace(/([A-Z])/g, '_$1');
			value = 'feedostyle_' + value.toLowerCase();
			
			code.push(value);
			code.push(' = ');
			
			value = settings[setting];
			if (typeof value == 'string') {
				value = value.strip();
				
				pars.push('"');
				pars.push(encodeURIComponent(value));
				pars.push('"');
				
				code.push('"');
				code.push(value);
				code.push('"');
			} else {
				pars.push(encodeURIComponent(value));	
				code.push(value);
			}
			
			code.push(';\n');
    	}    	
		
		code.push('\n//]]>\n');
		code.push('</script>\n');
	    code.push('<script type="text/javascript" src="' + FeedoStyleWeb.DigestServer + '/feedostyle.js');
	    code.push('"></script>\n');
		code.push('<!-- End Feedo Style code version: X.1. -->');
		
		
    	var printCode = function() {
			if (typeof urchinTracker != 'undefined'){
				urchinTracker('goals/createDigestFinish');
			}
			$('step2').style.display = 'none';
			$('step3').style.display = 'block';		
    		$('codeContent').value = code.join('');

		    $('saveDigest').disabled = false;
   			if ($F('customerId'))
		    	$('saveDigest').value = 'Save';
		    else
		    	$('saveDigest').value = 'View Code';
			$('saveDigestBox').style.display = 'none';
    	};
    	
        var ajax = new Ajax.Request('default.aspx', { 
            method: 'post', 
            parameters: pars.join(''),
            onFailure : function() {
				FeedoStyleWeb.showError();
				
				$('saveDigestBox').style.display = 'none';					
		   		$('saveDigest').disabled = false;
		   		$('saveDigest').value = 'Save';
            },
            onSuccess: printCode
        });	
	},
	deleteReferer : function(id) {		
		if (!confirm('Are you sure you want to permanently delete this allowed website?')) {
			return;
		}
		var done = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {	
				var node = $('referer_' + id);
				node.parentNode.removeChild(node);
				
				if ($('allowedReferersList').innerHTML.strip().length == 0) {
					$('allowedReferers').style.display = 'none';
				}
			} else {
				FeedoStyleWeb.showError('Unable to delete the selected referer. Please retry.');
			}
		};
		
    	var pars = 'cback=deleteReferer&id=' + id + '&seed=' + Math.floor(Math.random()*999999);
        var ajax = new Ajax.Request('default.aspx', { 
            method: 'post', 
            parameters: pars,
            onFailure : function() {
				FeedoStyleWeb.showError();
				$('loadStep2').style.display = 'none';					
		   		$('nextBtn').disabled = false;
		   		$('nextBtn').value = 'Next';
            },
            onSuccess: done
        });	
	},
	deleteDigest : function(id) {
		if (confirm('Are you sure you want to permanently delete this digest?')) {
			var done = function(response) {
				var result = eval('(' + response.responseText + ')');
				if (result.isSuccessful) {	
					var node = $('digest_' + id);
					node.parentNode.removeChild(node);
				} else {
					FeedoStyleWeb.showError('Unable to delete the selected digest. Please retry.');
				}
			};
			
			var url = 'default.aspx';
	    	var pars = 'cback=deleteDigest&id=' + id + '&seed=' + Math.floor(Math.random()*999999);
	        var ajax = new Ajax.Request(url, { 
	            method: 'post', 
	            parameters: pars,
	            onFailure : function() {
					FeedoStyleWeb.showError();
					$('loadStep2').style.display = 'none';					
			   		$('nextBtn').disabled = false;
			   		$('nextBtn').value = 'Next';
	            },
	            onSuccess: done
	        });	
	    }
	},
	showInfo : function(text) {
	    $('socialInfo').innerHTML = 'Add Feedo Style to <strong>' + text + '</strong>';
	    $('socialInfo').className = 'selected';
	},
	hideInfo : function() {
		$('socialInfo').className = '';
		$('socialInfo').innerHTML = '';
	},
	initRegister : function()
	{
	    if(!$('editForm'))
	        return;
	      
	if(!$('PlanType'))
	        return;
	    Event.observe('PlanType', 'change', function() {
			var value = $F('PlanType').strip();
			
			switch($F('PlanType').strip())
			{
			    case 'Standard':
			        $('product').value = '0';
			    break;
			    
			    case 'Advanced':
			        $('product').value = '1';
			    break;
			    
			    case 'Enterprise':
			        $('product').value = '2';
			    break;
			    
			    case 'Community':
			        $('product').value = '-1';
			    break;
			}
				    
			    if($F('PlanType')=='Community')
			    {
			        $('save').value = 'Save';
			    }
			    else
			    {
			        $('save').value = 'Purchase';
			    }
		}, false);
	},
	changePassword : function() {
		if ($('changePassword').style.display == 'none')
			Effect.Appear('changePassword');
		else 
			Effect.Fade('changePassword');
	},
	toggleReminder : function() {
		$('error').style.display = 'none';
		if ($('helpEmail')) {
			$('reminderEmail').value = $('helpEmail').value;
		}
		if ($('forgotPass').style.display == 'none')
			Effect.Appear('forgotPass');
		else 
			Effect.Fade('forgotPass');		
	},
	remindPassword : function() {
		if ($('holder2')) {
			$('holder2').appendChild($('error'));
		}
		var email = $F('reminderEmail').strip();
		
		if (!email) {
			FeedoStyleWeb.showError('Please insert your email address.');
			return;
		}
		
	    var emailRegex = /^[\w\d]+((-[\w\d]+)|(\.[\w\d]+)|(_[\w\d]+))*\@[\d\w]+((\.|-)[\w\d]+)*\.[\d\w]+$/i;
		if (!emailRegex.test(email) || email.length < 8){
			FeedoStyleWeb.showError('Please insert a valid email address.');
			return;
		}
			
		$('remindBtn').disabled = true;
		$('remindBtn').value = 'Processing...';
		
		var done = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (result.isSuccessful) {
				Effect.Appear('message');
				$('username').value = email;
				$('reminderEmail').value = '';
		   		$('remindBtn').disabled = true;
		   		$('remindBtn').value = 'Done';		   		
				$('error').style.display = 'none';
				Effect.Fade('forgotPass');	
			} else {
				FeedoStyleWeb.showError(result.error);	
		   		$('remindBtn').value = 'Reset Password';	
		   		$('remindBtn').disabled = false;
			}
		};
		
    	var pars = 'cback=remindPassword&email=' + encodeURIComponent(email) + '&seed=' + Math.floor(Math.random()*999999);
        var ajax = new Ajax.Request('default.aspx', { 
            method: 'post', 
            parameters: pars,
            onFailure : function() {
				FeedoStyleWeb.showError();				
		   		$('remindBtn').disabled = false;
		   		$('remindBtn').value = 'Reset Password';
            },
            onSuccess: done
        });	
	},
	socialBookmark : function(network) {
		var url = 'http://';
		var title = document.title;
		var page = document.location.href;
		var description = encodeURIComponent('Feedo Style: The Most Stylish Feed Digest Ever!');
		
		switch (network) {
			case 'furl':
				url += 'www.furl.net/storeIt.jsp?t=' + encodeURIComponent(title)
					+ '&u=' + escape(page) + '&r=' + escape(document.referrer) 
					+ '&c=' + description;
				break;
			case 'delicious':
				url += 'del.icio.us/post?url=' + encodeURIComponent(page)
					+'&title=' + encodeURIComponent(title);
				break;
			case 'yahoo':
				url += 'myweb2.search.yahoo.com/myresults/bookmarklet?u=' 
					+ escape(page) + '&t=' + encodeURIComponent(title);
				break;
			case 'blinklist':
				url += 'www.blinklist.com/index.php?Action=Blink/addblink.php&Description='
					+ description + '&Url='+escape(page)+'&Title='+encodeURIComponent(title)+'&Pop=yes';
				break;
			case 'digg':
				url += 'digg.com/software/Generate_more_traffic_by_giving_away_your_feeds';
				break;
			case 'spurl':
				url += 'www.spurl.net/spurl.php?v=3&title=' + encodeURIComponent(title) 
					+'&url='+escape(page) + '&blocked=' + description;
				break;
			case 'blogmarks':
				url += 'blogmarks.net/my/new.php?mini=1&title=' + encodeURIComponent(title)
					+ '&url='+escape(page)+'&summary=' + description;
				break;
			case 'jots':
				url += 'jots.com/users/?show_post=true&url='+escape(page)
					+'&title='+encodeURIComponent(title);
				break;
			case 'scuttle':
				url += 'scuttle.org/bookmarks.php/?action=add&noui=yes&jump=close&address=' 
					+ escape(page)+'&description=' + description + '&title=' + encodeURIComponent(title);
				break;
			case 'shadows':
				url += 'www.shadows.com/features/tcr.htm?url='+ escape(page)+'&title='
					+ encodeURIComponent(title);
				break;
			case 'simpy':
				url += 'www.simpy.com/simpy/LinkAdd.do?title=' +encodeURIComponent(title)
					+'&href='+escape(page)+'&note=' + description + '&_doneURI=' + FeedoStyleWeb.WebServer
					+ '&v=6&src=bookmarklet';
				break;			
		}
			
		var f = window.open(url, 'feedoStyleBookmark','width=520,height=540,resizable=yes');
		f.focus();
	}
};

/**
 * Class that handles the preloading of images.
 * @param id The id of the target Feedo Style digest to preload
 * 
 * @constructor
 */
FeedoStyleWeb.Preloader = function(images) {
	this._images = [];
	this._imagesCount = 0;
	this._completeHandler = null;
	this.imagesLoaded = 0;
	this.imageCurrent = 0;
	
	var self = this;
	
	var loadNext = function() {
		self._images[self.imageCurrent++].startLoad();
	}
	
	var onloadHandler = function() {
		this.onload = null;
		self.imagesLoaded++;
		if (self.imagesLoaded < self._imagesCount) {
			window.setTimeout(loadNext, 1);			
		} 
	};
	
  	var PreloadImage = function(src) {
	    var path = 'images/' + src;
	    var image = new Image();
	    this.startLoad = function() {
	    	image.src = path;
	    	image.onload = onloadHandler;
	    }
	};
	
	for (var i = 0; i < images.length; i++) {
		this._images.push(new PreloadImage(images[i]));
		this._imagesCount++;
	}
  	
}
FeedoStyleWeb.Preloader.prototype.__loadNext = function() {
	this._images[this.imageCurrent++].startLoad();
}
FeedoStyleWeb.Preloader.prototype.start = function() {
	this.__loadNext();
}
FeedoStyleWeb.Help = {
	interval : null,
	init : function() {
		var icon = $('helpIcon');
		if (!icon) {
			return;
		}
		icon.style.position = 'absolute';
		
		FeedoStyleWeb.Help.reposition();
		icon.style.display = 'block';
	},
	toggleEmail : function() {
		if ($('emailArea').style.display != 'block') {
			$('emailArea').style.display = 'block';
			$('restoreEmail').style.display = 'none';			
		} else {
			$('emailArea').style.display = 'none';
			$('restoreEmail').style.display = 'block';			
		}
	},
	send : function() {
		var message = $F('helpMessage').strip();
		var email = $F('helpEmail').strip();
		if (!message) {			
			FeedoStyleWeb.showError('Please write a comment or question in the text box.', 'helpError');
			return;
		}
		if ($('emailArea').style.display == 'block') {		
			var emailRegex = /^[\w\d]+((-[\w\d]+)|(\.[\w\d]+)|(_[\w\d]+))*\@[\d\w]+((\.|-)[\w\d]+)*\.[\d\w]+$/i;
			if (!email || !emailRegex.test(email) || email.length < 8){
				FeedoStyleWeb.showError('Please insert a valid email address.', 'helpError');
				return;
			}	
		}
		
		$('sendHelpBtn').value = 'Sending...';
		$('sendHelpBtn').disabled = true;
		
		var completed = function() {
			FeedoStyleWeb.hideError('helpError');
		    $('helpMessage').value = '';
			$('helpTextArea').style.display = 'none';
			$('sendHelpBtn').value = 'Send';
			$('sendHelpBtn').disabled = false;
			Effect.Appear('helpSuccessful');
		};
		
		var pars = 'cback=feedback&content=' + encodeURIComponent(message)
			+ '&email=' + encodeURIComponent(email);
        var ajax = new Ajax.Request('default.aspx', { 
	        method: 'post', 
	        parameters: pars,
	        onFailure:function() {
				$('sendHelpBtn').value = 'Send';
				$('sendHelpBtn').disabled = false;
				FeedoStyleWeb.showError(null, 'helpError');
	        },
	        onSuccess:completed });
	},
	toggle : function() {
		$('helpSuccessful').style.display = 'none';
		$('helpTextArea').style.display = 'block';
		if ($('helpHolder').style.display == 'none') {	
		    $('helpIcon').style.width = '350px';
		    Effect.Appear('helpHolder', {duration:0.4});	
		} else {	
		    Effect.Fade('helpHolder', 
		 	{   
		 		duration:0.4,
		 		afterFinish: function() {
		 			$('helpIcon').style.width= '30px';
		 		}
			});
		}
		FeedoStyleWeb.Help.reposition();
	},
	reposition : function() {
		var icon = $('helpIcon');
		var width = icon.offsetWidth + 25;
		var height = icon.offsetHeight + 22;
		
		var x, y;
		if (self && self.innerHeight)
		{
			x = self.innerWidth;
			y = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight)
		{
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
		}
		else if (document.body)
		{
			x = document.body.clientWidth;
			y = document.body.clientHeight;
		}
		
        if (self && self.pageYOffset) // all except Explorer
        {
	        x += self.pageXOffset;
	        y += self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop)
	        // Explorer 6 Strict
        {
	        x += document.documentElement.scrollLeft;
	        y += document.documentElement.scrollTop;
        }
        else if (document.body) // all other Explorers
        {
	        x += document.body.scrollLeft;
	        y += document.body.scrollTop;
        }
		
		x -= width;
		y -= height;
		
		icon.style.left = x + 'px';
		icon.style.top = y + 'px';
		
		window.setTimeout(FeedoStyleWeb.Help.reposition, 50);
	}
};
FeedoStyleWeb.Demo = {
	id : '00000000-0000-0000-0000-000000000001',	
	themeAnimation : null,
	currentThemeIndex : 0,
	previewWindow : null,
	themes : [
			{code:'gold', name:'Gold'},
			{code:'dark', name:'Dark Sun'},
			{code:'fire', name:'Fire'},
			{code:'vanilla', name:'Vanilla'},
			{code:'vanilla_black', name:'Vanilla Black'},
			{code:'nature', name:'Nature'},
			{code:'ice', name:'Ice Age'},
			{code:'solid_black', name:'Solid Black'},
			{code:'solid_white', name:'Solid White'},
			{code:'solid_blue', name:'Solid Blue'},
			{code:'solid_purple', name:'Solid Purple'},
			{code:'solid_red', name:'Solid Red'},
			{code:'solid_green', name:'Solid Green'},
			{code:'solid_orange', name:'Solid Orange'}
	],
	checkLoginStatus : function() {
		var check = function(response) {
			var result = eval('(' + response.responseText + ')');
			if (!result.isSuccessful) {
				window.location.href = window.location.href;
			}
		};
		var pars = 'cback=status&seed=' + Math.floor(Math.random()*999999);
	    new Ajax.Request('default.aspx', { 
	        method: 'get', 
	        parameters: pars,
	        onSuccess: check
	    });	
	},
	init : function() {		
		if (!$('demoForm'))	{
			return;
		}
			
		if ($('customerId') && !$F('customerId')){			
			$('saveDigest').value = 'View Code';
			$('backHomeBtn').onclick = FeedoStyleWeb.goMain;
		}
		
		new Form.EventObserver('demoForm', FeedoStyleWeb.Demo.reloadDigest);
		
		if ($('digestTitle')) {
			Event.observe('digestTitle', 'keyup', function() {
				FeedoStyle.setDigestTitle(window.feedostyle_id, $F('digestTitle'));
			}, false);
		}
		if ($('digestSubtitle')) {
			Event.observe('digestSubtitle', 'keyup', function() {
				FeedoStyle.setDigestSubtitle(window.feedostyle_id, $F('digestSubtitle'));
			}, false);
		}
		
		if (!window.feedostyle_no_render) {
			FeedoStyleWeb.Demo.reloadDigest();
		}
		
		var validateDigest = function(value, type, target) {			
			var showMessage = function(message) {
				$('digest' + target + 'Message').innerHTML = message;
				$('digest' + target + 'Warning').style.display = 'block';
				new Effect.Highlight('digest' + target + 'Message', {startcolor:'#ffce4b', endcolor:'#fff0a1'});
				$('digest' + type).value = '';
			}
			
			if (!value) {
				showMessage('Please insert a valid ' + type.toLowerCase() +'.');
				return false;
			}
			if (!value.match(/^(\d+(\.\d*)?(em|px|%)?|auto)$/))
			{
				showMessage('The value inserted is not a valid ' + type.toLowerCase() +'.');
				return false;
			}
			if (value.indexOf('.') != -1 && value.indexOf('px') != -1) {
				showMessage('Decimal are allowed only for "ems" and percentages.');
				return false;
			}
			if (!isNaN(value) && value.indexOf('.') == -1) {
				value = value + 'px';
			} else if (!isNaN(value)) {
				value = value + 'em';
			}
			
			$('digest' + type).value = value;
			$('digest' + target + 'Warning').style.display = 'none';
			return true;
		};
		
		
		// Font size validation
		Event.observe('digestWidth', 'change', function() {
			var value = $F('digestWidth').strip();
			validateDigest(value, 'Width', 'Size');
		}, false);
		Event.observe('digestHeight', 'change', function() {
			var value = $F('digestHeight').strip();
			validateDigest(value, 'Height', 'Size');
		}, false);
		if ($('digestSpacing')) {
			Event.observe('digestSpacing', 'change', function() {
				var value = $F('digestSpacing').strip();
				if (validateDigest(value, 'Spacing', 'Spacing')) {
					FeedoStyleWeb.Demo.reloadDigest();
				}
			}, false);
		}
		
		// Colors 
		var formElements = [
			'entryCount',
			'summaryLength'];
		for (var i = 0; i < formElements.length; i++) {
			if ($(formElements[i]))	
				Event.observe(formElements[i], 'change', FeedoStyleWeb.Demo.reloadDigest);
		}
		var styleElements = [
			'fontSize',
			'pauseTime',
			// Colors
			'captionTitleColor', 
			'captionSubtitleColor', 
			'foregroundColor', 
			'linkColor', 
			'backgroundColor',
			'borderColor',
			'pageBackgroundColor',
			'fontFamily'];		
		for (var i = 0; i < styleElements.length; i++) {
			if ($(styleElements[i]))	
				Event.observe(styleElements[i], 'change', FeedoStyleWeb.Demo.updateStyles);
		}
		if ($('themeList')) {
			var list = document.createElement('ul');
			list.id = 'themes';
			var themes = FeedoStyleWeb.Demo.themes;
			var buffer = [];
			for (var i = 0; i < themes.length; i++) {
				buffer.push('<li><p><img src="' + FeedoStyleWeb.DigestServer + '/themes\/');
				buffer.push(themes[i].code);
				buffer.push('/thumbnail.png" width="140" height="113" alt="');
				buffer.push(themes[i].name);
				buffer.push('" \/><br /><span class="title">');
				buffer.push(themes[i].name);
				buffer.push('<\/span><\/p><\/li>');
			}
			list.innerHTML = buffer.join('');
			$('themeList').innerHTML = '';
			$('themeList').appendChild(list);
		}
		
		if ($('homeDemo')) {					
			var s = document.createElement('script');
			s.type = 'text/javascript';
			s.src =  FeedoStyleWeb.DigestServer + '/feedostyle.js';
			FeedoStyleWeb.appendToHead(s);
			window.feedostyle_no_render = false;
			window.feedostyle_parent_element='homeDemo';
		}
	},
	fullPreview : function(id) {
		var win = FeedoStyleWeb.Demo.previewWindow;
		if (win)
		{
			win.close();
		}
		var url = '/preview.aspx';
		if (id) {
			url += '?id=' + id;
		}
		
		win = window.open(url, '_feedoStylePreview', 'resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,menubar=no');
		var load = function() {	
			var settings = FeedoStyleWeb.Demo.getSettings(true);
			var digest = FeedoStyle.getDigest(window.feedostyle_id);
	
			win.document.getElementById('feedostyleHook').style.width = settings.width;
			if (settings.pageBackgroundColor && settings.pageBackgroundColor != 'auto') {
				win.document.getElementById('body').style.backgroundColor = settings.pageBackgroundColor;
			}
			
			win.render(settings, digest);
			
			win.focus();
		};		
			
		if (!id) {
			Event.observe(win, 'load', load);	
		}	
	},
	selectTheme : function(index)
	{
	  var themes = FeedoStyleWeb.Demo.themes;
	  var scrollThemeBy = index * -213;
	  
	    if (FeedoStyleWeb.Demo.themeAnimation || 
			index >= themes.length - 1) {
			return;
		}
		
		FeedoStyleWeb.Demo.currentThemeIndex=index;
		FeedoStyleWeb.Demo.themeAnimation = new Effect.MoveBy('themes', 0, scrollThemeBy, { 
			afterFinish: function() {
				FeedoStyleWeb.Demo.themeAnimation = null;
			},
			duration: 0, 
			transition: Effect.Transitions.sinoidal
		});	 
	},
	setTheme :function(theme) {
		var settings = {};
		settings.theme = theme;
		FeedoStyle.redraw(window.feedostyle_id, settings);
	},
	nextTheme : function () {
		var themes = FeedoStyleWeb.Demo.themes;
		var index = FeedoStyleWeb.Demo.currentThemeIndex;
		if (FeedoStyleWeb.Demo.themeAnimation || 
			index >= themes.length - 1) {
			return;
		}
		FeedoStyleWeb.Demo.currentThemeIndex++;
		FeedoStyleWeb.Demo.themeAnimation = new Effect.MoveBy('themes', 0, -213, { 
			afterFinish: function() {
				FeedoStyleWeb.Demo.themeAnimation = null;
				FeedoStyleWeb.Demo.setTheme(themes[FeedoStyleWeb.Demo.currentThemeIndex].code);
			},
			duration: 0.75, 
			transition: Effect.Transitions.sinoidal
		});	
	},
	
	previousTheme :function () {
		var themes = FeedoStyleWeb.Demo.themes;
		if (FeedoStyleWeb.Demo.themeAnimation || FeedoStyleWeb.Demo.currentThemeIndex == 0) {
			return;
		}
		FeedoStyleWeb.Demo.currentThemeIndex--;
		FeedoStyleWeb.Demo.themeAnimation = new Effect.MoveBy('themes', 0, 213, { 
			afterFinish: function() {
				FeedoStyleWeb.Demo.themeAnimation = null;
				FeedoStyleWeb.Demo.setTheme(themes[FeedoStyleWeb.Demo.currentThemeIndex].code);
			},
			duration: 0.75, 
			transition: Effect.Transitions.sinoidal
		});	
	},
	resetStyles : function() {
		var colors = [
			'captionTitleColor', 
			'captionSubtitleColor', 
			'foregroundColor', 
			'linkColor', 
			'backgroundColor',
			'borderColor',
			'pageBackgroundColor'];	
		for (var i = 0; i < colors.length; i++)
			$(colors[i]).value = 'auto';
		var settings = FeedoStyleWeb.Demo.getSettings();
		FeedoStyle.updateStyles(settings.id, settings);
	},
	updateStyles : function() {
		var settings = FeedoStyleWeb.Demo.getSettings();
		FeedoStyle.updateStyles(settings.id, settings);
	},
	reloadDigest : function() {
		var settings = FeedoStyleWeb.Demo.getSettings();
		FeedoStyle.redraw(settings.id, settings);
	},
	getSettings : function(isFullPreview) {
		var settings = {};
		if (window.feedostyle_id) {
			settings.id = window.feedostyle_id;
		} else {
			settings.id = FeedoStyleWeb.Demo.id;			
		}
		
		if ($('formatScrolling').checked) {
			settings.format = FeedoStyle.DigestFormats.VERTICAL_MARQUEE;
		} else {
			settings.format = FeedoStyle.DigestFormats.STATIC;
		}
		
		if ($('digestTitle'))
			settings.title = $F('digestTitle');
		if ($('digestSubtitle'))
			settings.subtitle = $F('digestSubtitle');
		if ($('captionYes'))
			settings.showCaption = $('captionYes').checked;
		if ($('dateYes')) {
			settings.showDate = $('dateYes').checked;
			settings.showTime = $('dateYes').checked;
		}
		else {
			settings.showDate = true;
			settings.showTime = true;
		}
		if ($('summaryYes'))
			settings.showSummary = $('summaryYes').checked;
		if ($('sourceYes'))
			settings.showSource = $('sourceYes').checked;
		if ($('copyrightYes'))
			settings.showCopyright = $('copyrightYes').checked;
		if ($('roundedYes'))
			settings.roundedCorners = $('roundedYes').checked;
			
		if ($('pauseTime'))
			settings.pauseTime = parseInt($F('pauseTime'));
		if ($('fontSize'))
			settings.fontSize = $F('fontSize');
			
		if ($('fontFamily'))
			settings.fontFamily = $F('fontFamily');
			
		if (isFullPreview) {
			settings.width = $F('digestWidth');
			settings.height = $F('digestHeight');
			if ($('pageBackgroundColor'))
				settings.pageBackgroundColor = FeedoStyle.stringToHexColor($F('pageBackgroundColor'));
		}
		
		if ($('footerNo'))
			settings.hideFooter = $('footerNo').checked;
		
		if ($('captionTitleColor'))
			settings.captionTitleColor = FeedoStyle.stringToHexColor($F('captionTitleColor'));			
		if ($('captionSubtitleColor'))
			settings.captionSubtitleColor = FeedoStyle.stringToHexColor($F('captionSubtitleColor'));
		if ($('foregroundColor'))
			settings.foregroundColor = FeedoStyle.stringToHexColor($F('foregroundColor'));
		if ($('linkColor'))
			settings.linkColor = FeedoStyle.stringToHexColor($F('linkColor'));
		if ($('backgroundColor'))
			settings.backgroundColor = FeedoStyle.stringToHexColor($F('backgroundColor'));
		if ($('borderColor'))
			settings.borderColor = FeedoStyle.stringToHexColor($F('borderColor'));			
		
		if ($('summaryLength'))
			settings.summaryLength = parseInt($F('summaryLength'));
		if ($('entryCount') && isFullPreview) {
			settings.entryCount = parseInt($F('entryCount'));
			if (isNaN(settings.entryCount)) {
				settings.entryCount = 0;
			}
		} else {
			settings.entryCount = 5;
		}
		
		if ($('digestSpacing'))
			settings.entrySpacing = $F('digestSpacing');
		if ($('collapseYes'))
			settings.collapseOverflow = $('collapseYes').checked;
		if ($('themes'))
			settings.theme = FeedoStyleWeb.Demo.themes[FeedoStyleWeb.Demo.currentThemeIndex].code;
		settings.newWindowLinks = $('windowYes').checked;
		
		return settings;
	}
	
	
}
Event.observe(window, 'load', FeedoStyleWeb.Help.init, false);
Event.observe(window, 'load', FeedoStyleWeb.init, false);
Event.observe(window, 'load', FeedoStyleWeb.Demo.init, false);
Event.observe(window, 'load', FeedoStyleWeb.initWizard, false);
Event.observe(window,'load',FeedoStyleWeb.initRegister,false);