var Site = {
	
	start: function(){
		if ($('photocrop')) Site.photoCropper();
		if ($('logocrop')) Site.logoCropper();
		//if ($('search')) Site.search();
		if ($('optional')) Site.optional();
		if ($('regform')) Site.regform();
		if ($('profileform')) Site.profileform();
		if($('email-link')) Site.email();
		if($('login-email-link')) Site.emailNotLoggedIn();
		Site.submitButtons();
		Site.remooz();
		Site.remoozHref();
		Site.tooltips();
		if($$('.slideitmoo110').length>0){ Site.slideitmoo110(); }
		if($$('.charts').length>0){ Site.toggleCharts(); }
		if($$('.profile-card').length>0){ Site.profilesLinks(); }
		if($$('.outclick').length>0){ Site.outclick(); }
		if($$('.rabidRating').length>0){ Site.ratings(); }
		if(document.id('send-flag')){ Site.flag(); }
		Site.brokenImages();
		if(document.id('location')){ Site.autocompleteLocation(); }
		//Site.roar();
		//Site.under();
	},
	
	under: function(){
        var open = Cookie.read('under') ? false : true;
        if(open==true){
            var page = "http://tour1.xxxmatch.com/free_adult_dating_thumbs/39791/";
            var windowprops = "location=1,menubar=0,scrollbars=1,resizable=1,toolbar=1";
            window.addEvent("click", function(){
                newWindow = window.open(page,'PopupName',windowprops);
                newWindow.blur();
                Cookie.write('under',1,{path: '/', duration: 1});
                open = false;
            })
        }
	},
	
	ratings: function(){
	    new Asset.javascript('/js/ratings.js',{ onload : function(){
	        new Asset.css('/css/ratings.css');
	    }}); 
	},
	
	autocompleteLocation: function(){
	    new Asset.javascript('/js/Autocompleter.js',{ onload : function(){
	        new Asset.javascript('/js/Autocompleter.request.js',{ onload : function(){
	            new Asset.javascript('/js/Observer.js',{ onload : function(){
	                new Asset.css('/css/Autocompleter.css');
                    var inputWord = document.id('location');
                    new Autocompleter.Request.JSON(inputWord, '/home/places.php', {
                        'indicatorClass': 'autocompleter-loading'
                    });
                }});
            }});
        }});
	},
	
	slideitmoo110: function(){
	    var banners = $$('.slideitmoo110');
	    banners.each(function(el,i){
	        var dir = (i%2 ==0) ? 1 : -1;
	        new SlideItMoo({overallContainer: el,
                elementScrolled: el.getFirst('div'),
                thumbsContainer: el.getFirst('div').getFirst('div'),		
                itemsVisible:1,
                itemsSelector: '.banner',
                showControls:0,
                autoSlide: 3000,
                transition: Fx.Transitions.Sine.easeOut,
                duration: 1800,
                direction:dir
    		});
	    })
	},
	
	verify: function(){
		var verified = Cookie.read('verified') ? Cookie.read('verified') : false;
		if(!verified){
			//Mediabox.open('/documents/verify.php', 'FoxyLocalEscorts.com Age Verification', '640 450');
		}
	},
	
	flag: function(){
	    var flag = document.id('flag');
    	flag.setStyle("display","inline");
    	var flagfrm = document.id('flagfrm');
    	flag.addEvent('click',function(){
    	    flagfrm.fade('in');
		})
		//submit button submit
		document.id('send-flag').addEvent('click', function(e){
			e.stop();
			var notification = new Request({
    			url: flagfrm.getParent().action,
    			method: 'post',
    			data: flagfrm.getParent() 
    		}).send();
			flagfrm.fade('out');
			$('reason').set('value','');
    		flag.setStyle("color","green");
    		flag.set("text","Thank you. We will review this ad.");
		});
		document.id('close').addEvent('click', function(){
		    $('reason').set('value','');
			flagfrm.fade('out');
		})
    },
    
    brokenImages: function(){
    	$$('img').addEvent('error',function() {
    		var notification = new Request({
    			url: '/ping/notify-image-error.php',
    			method: 'post',
    			data: {
    				'image': this.get('src'),
    				'page': window.location.href
    			}
    		}).send();
    	});
    },
	
	outclick: function(){
	    var links = $$('.outclick');
	    parts = $('profile').get('rel').split('-');
        var type = parts[0];
        var id = parts[1];
	    links.each(function(el){
	        el.addEvent('click', function(e){
	            Site.recordOutboundLink(el, 'Outclick', el.get('href'));
	            var req = new Request({
            		method: 'get',
        			url: '/ping/outclick.php',
            		data: { 'id' : id, 'type': type },
            		async: false
            	}).send();
	        })
	    })
	},
	
	recordOutboundLink: function(link, category, action) {
        _gat._getTrackerByName()._trackEvent(category, action);
        setTimeout('document.location = "' + link.href + '"', 100);
    },
	
	profilesLinks: function(){
	    var pauseLinks = $$('.pauselink');
	    var deleteLinks = $$('.deletelink');
        pauseLinks.each(function(el,i){
            el.setStyle('cursor','pointer');
	        el.addEvent('click', function(e){
	            e.stop();
	            var parts = el.get('id').split('-');
	            var action = parts[0];
	            var type = parts[1];
	            var id = parts[2];
				var request = new Request({
					url: '/home/operations.php',
					link: 'chain',
					method: 'get',
					data: {
					    'action': action, 
						'id': id,
						'type': type
					},
					onComplete: function(response) {
					    response = JSON.decode(response);
					    if(response.success){
					        if(response.action == 'pause'){
					            var text = 'Activate ad';
					            var elementid = 'unpause-'+type+'-'+id;
					            var elementstatus = 'paused by user';
					        }else{
					            var text = 'Pause ad';
					            var elementid = 'pause-'+type+'-'+id;
					            var elementstatus = 'active';
					        }
					        el.getParent('li').getFirst('strong').getFirst('span').set('html',elementstatus);
					        el.set('id',elementid);
					        el.set('html',text);
					        el.getParent('div').highlight();
					    }
					}
				}).send();
	        })
	    })
	    deleteLinks.each(function(el,i){
            el.setStyle('cursor','pointer');
	        el.addEvent('click', function(e){
	            e.stop();
	            var parts = el.get('id').split('-');
	            var type = parts[0];
	            var id = parts[1];
	            if(type=='escort'){
	                var choice = confirm('Are you sure you want to delete this ad? This action cannot be undone.');
	            }else if(type=='agency'){
	                var choice = confirm('Are you sure you want to delete your agency ad? This action will also delete all your associated escort ads.')
	            }
	            if(choice){
					var request = new Request({
						url: '/home/operations.php',
						link: 'chain',
						method: 'get',
						data: {
						    'action': 'delete', 
							'id': id,
							'type': type
						},
						onComplete: function(response) {
						    response = JSON.decode(response);
						    if(response.success){
						        Site.redirect.delay(1,this,"/home/");
						    }
						}
					}).send();
	        	}
	        })
	    });
	},
	
	toggleCharts: function(){
	    var chartsLinks = $$('.chartslink');
	    var charts = $$('.charts');
	    charts.each(function(el){
	        el.hide();
	    })
	    chartsLinks.each(function(el,i){
	        el.addEvent('click', function(e){
	            e.stop();
	            charts[i].toggle();
	        })
	    })
	},
	
	emailNotLoggedIn: function(){
	    var link = $('login-email-link');
	    link.setStyle('cursor','pointer');
	    link.addEvent('click', function(){
	      alert('You must be logged-in to do that.');  
	    })
	},
	
	email: function(){
	    var form = $('email-form');
		var message = form.getFirst('textarea');
		var link = $('email-link');
		link.setStyle('cursor','pointer');
		var cancel = form.getFirst('span');
		cancel.setStyle('cursor','pointer');
		
		form.position({position: 'center'});
			
		form.set('send', { onComplete: function(response) { 
			var response = JSON.decode(response);
			if(response.success){
			    link.set('text','message sent');
				form.fade('out').setStyle('display','none');
				message.set('value','');
			}
		}});
			
		//submit button submit
		form.addEvent('submit', function(e){
		    e.stop();
			form.send();
		});
			
		//cancel link
		cancel.addEvent('click', function(){
			form.fade('out').setStyle('display','none');
		})
			
		//show link
		link.addEvent('click', function(e){
			form.fade('in').setStyle('display','block');
		});
	},
	
	checkOnline: function(){
	    var checker = new Request({
            method: 'post',
            url: '/ping/loggedin.php',
            initialDelay: 15000,
            delay: 15000,
            //limit: 15000,
            onSuccess: function(response){
                if(response=='false'){
                    alert("Your session has expired due to inactivity. Please log-in again.")
                    Site.redirect.delay(1,this,"/login/");
                }
            }
        });
        var loc = window.location.toString();
        if(loc.indexOf("/home/")>0){
            checker.startTimer();
        }
	},
	
	remooz: function(){
		ReMooz.assign('.thumb', {
			'origin': 'img',
            'shadow': 'onOpenEnd', // fx is faster because shadow appears after resize animation
            'resizeFactor': 0.9, // resize to maximum 80% of screen size
            'cutOut': false, // don't hide the original
            'opacityResize': 0.4, // opaque resize
            'dragging': false, // disable dragging
            'centered': true // resize to center of the screen, not relative to the source element
		});
	},
	
	remoozHref: function(){
	    ReMooz.assign('a.inline-href', {
	        'origin': 'a',
	        'shadow': 'onOpenEnd', // fx is faster because shadow appears after resize animation
            'resizeFactor': 0.9, // resize to maximum 80% of screen size
	        type:'href',
	        cutOut:false,
	        'opacityResize': 0.4, // opaque resize
            'dragging': false, // disable dragging
            'centered': true // resize to center of the screen, not relative to the source element
	    });
	},
	
	submitButtons: function(){
		var pleaseWait = new Element('span');
		pleaseWait.set('html','Processing. Please wait...');
		pleaseWait.setStyle('font-weight','bold');
		$$('input[type=submit]').addEvent('click',function(e) {
            if (Browser.Engine.webkit) {
                new Request({url: "/ping/close.php", asynch:false }).send();
            }
			if(this.id!='search'){
			 pleaseWait.inject(this, 'after');   
			}
		});
	},

	messageForm: function(){
		$('message-form').addEvent('submit', function(e) {
			e.stop();
			var jsonRequest = new Request.JSON({
				url: this.action,
				data: $('message-form'),
				onSuccess: function(response){
    				if(response.sent==true){
						$('message-form').reset();
						notificationRoar.alert('Thank you', 'Message Sent');
					}else{
						notificationRoar.alert('Error', response.error);
					}
				},
				onFailure:  function(){
					notificationRoar.alert('Error', "Error sending message");
				},
				onException:  function(){
					notificationRoar.alert('Error', "Error sending message");
				}
			}).send();
		});
	},
	
	toggles: function(){
		$$('.toggle').each(function(el){
			var target = el.getNext('div');
			var myFx = new Fx.Slide(target, {
    			duration: 1000,
    			transition: Fx.Transitions.Pow.easeOut
			});
			el.addEvent('click', function(){
				myFx.toggle(); 
			});
			myFx.hide();
		})
	},
	
	deleteParent: function(){
		$$('a.delete').each(function(el) {
			el.addEvent('click',function(e) {
				e.stop();
				var parent = el.getParent();
				var request = new Request({
					url: '/home/photos/delete',
					link: 'chain',
					method: 'post',
					data: {
						'delete': parent.get('id').replace('record-',''),
						ajax: 1
					},
					onRequest: function() {
						new Fx.Tween(parent,{
							duration:300
						}).start('background-color', '#000');
					},
					onSuccess: function() {
						new Fx.Slide(parent,{
							duration:300,
							onComplete: function() {
								parent.dispose();
							}
						}).slideOut();
						notificationRoar.alert('Thank you', 'The photo has been deleted');
					}
				}).send();
			});
		});
	},
	
	regform: function(){
		Site.textLimit(100,500);
		Site.badWords();		
	},
	
	profileform: function(){
		var imperial = $('ftin');
		var metric = $('centimetres');
		
		if($('heightunits').value=='imperial'){
		    metric.setStyle('display','none');
		}else if($('heightunits').value=='metric') {
		    imperial.setStyle('display','none');
		}else{
		    metric.setStyle('display','none');
		    imperial.setStyle('display','none');
		}
		$('heightunits').addEvent('change',function(){
			if(this.value=='imperial'){
				imperial.setStyle('display','inline');
				metric.setStyle('display','none');
				$('height-cm').set('value','');
			}else{
				metric.setStyle('display','inline');
				imperial.setStyle('display','none');
				$('height-inches').set('value','');
				$('height-feet').set('value','');
			}
		})
		Site.textLimit(100,500);
		Site.badWords();	
		Site.badDomains();	
	},
	
	textLimit: function(minChars,maxChars){
		var textAreas = $$(".textlimit");
		var count = new Element('span',{'id': 'count', 'style': 'display: inline-block'});
    	textAreas.each(function(el){
    		count.inject(el,'after');
    		el.addEvent('keyup', function(){
    			count.setStyle('display','inline-block');
    			if($('warning')){ $('warning').destroy(); }
    			var chars = this.get("value").trim().length;
    			count.set('html',chars+' of '+maxChars+' characters used');
				if (chars >= maxChars) {
					chars = maxChars;
					this.set("value", this.get("value").substring(0,maxChars));
					var warning = new Element('span',{'html': 'limit of 500 characters reached','id': 'warning'});
					warning.inject(this,'after');
					count.setStyle('display','none');
				}
    		});
    	});
	},
	
	badWords: function(){
	    var textAreas = $$("textarea");
	    new Request.JSON({url: "/ping/disallowed.php?words", onSuccess: function(responseJSON, responseString){
	        disallowed_words = JSON.decode(responseString);
	    }}).get();
	    textAreas.each(function(el){
    		el.addEvents({
    		    'keyup': function(){
    		        disallowed_words.each(function(item, index){
    		            var string = el.value.clean();
                        if(string.contains(item)){
                            el.fireEvent('burn');
                            var newstring = string.replace(item, "");
                            el.value = newstring.clean()+' ';
                        }
                    });
        		},
        		'burn': function() {
            		$('keepclean').highlight('#fff', '#ff0000');
            	}
    		});
    	});
	},
	
	badDomains: function(){
	    var field = $('website');
	    new Request.JSON({url: "/ping/disallowed.php?domains", onSuccess: function(responseJSON, responseString){
	        disallowed_domains = JSON.decode(responseString);
	    }}).get();
	    displayed_alert = false;
	    field.addEvents({
		    'keyup': function(){
		        if(field.value==""){ displayed_alert = false; }
		        disallowed_domains.each(function(item, index){
                    if(field.value.contains(item) && !displayed_alert){
                        alert('We cannot link to '+item+'. You must have your own website on your own domain (eg: yourname.com).');
                        field.value = '';
                        displayed_alert = true;
                    }
                });
                
    		}
		});
	},
	
	tooltips: function(){
		//store titles and text
		$$('.tooltip').each(function(element,index) {
			var content = element.get('title').split('::');
			element.store('tip:title', content[0]);
			element.store('tip:text', content[1]);
		});
	
		//create the tooltips
		var myTips = new Tips('.tooltip',{
			className: 'tipz',
			fixed: true,
			offset: {'x': 380, 'y': -5},
			hideDelay: 0,
			showDelay: 1000,
			styles: {
			    visibility: 'none'
			}
		});
		myTips.addEvents({
			'show': function(tip) {
			    tip.fade('in');
				$('explainer').fade(0.5);
			},
			'hide': function(tip) {
			    tip.fade('out');
				$('explainer').fade(1);
			}
		});

	},
	
	checkOptional: function(mySlide,toggler){		
		fields = $$('label').get('text');
		var errors = $$('.error');
		error = 0;
		errors.each(function(el){
			error = el.getPrevious('label').get('text');
		})
		var open = Cookie.read('optional') ? Cookie.read('optional') : false;
		if(fields.indexOf(error) <=8 && open == 'false'){
			mySlide.hide();
			toggler.set('text','2. Optional fields (click to show)');
		}
		if(open=='true'){
			toggler.set('text','2. Optional fields (click to hide)');
		}
	},
	
	optional: function(){
		var toggler = $('optional').getPrevious('h4');
		toggler.setStyle('cursor','pointer');
		var mySlide = new Fx.Slide('optional', {
    		duration: 1000,
    		transition: Fx.Transitions.Sine.easeOut
		});
		toggler.addEvent('click', function(){
			mySlide.toggle();
			if(mySlide.open){
				toggler.set('text','2. Optional fields (click to show)');
				var state = false;
			}else{
				toggler.set('text','2. Optional fields (click to hide)');
				var state = true;
			}
			var state = mySlide.open ? false : true; //the state just before it changes
			Cookie.write('optional', state, {path: '/', duration: 365});
			
		})
		
		Site.checkOptional(mySlide,toggler);
	},
	
	photoCropper: function(){
	    var cropper = new Asset.javascript('/js/UvumiCrop-compressed.js',{ onload : function(){
	        var cropperstyles = new Asset.css('/css/uvumi-crop.css');
		    myCropper = new uvumiCropper('photocrop',{
    			preview:true,
    			keepRatio: true,
    			saveButton:'Crop!',
    			mini: {x:100,y:150},
    			coordinatesOpacity: 1,
    			serverScriptSave: '/home/profile/photo-crop.php',
    			onCropFail: function(response){alert(response);
    				Site.redirect.delay(0,this,"/home/?msg=photo-error");
    			},
    			onCropSuccess: function(response){alert(response);
    				Site.redirect.delay(0,this,"/home/?msg=photo-saved");
    			}
    		});
		}});
	},
	
	logoCropper: function(){
	    var cropper = new Asset.javascript('/js/UvumiCrop-compressed.js',{ onload : function(){
	        var cropperstyles = new Asset.css('/css/uvumi-crop.css');
		    myCropper = new uvumiCropper('logocrop',{
    			preview:true,
    			keepRatio: false,
    			saveButton:'Crop!',
    			mini: {x:100,y:100},
    			coordinatesOpacity: 1,
    			serverScriptSave: '/home/profile/logo-crop.php',
    			onCropFail: function(response){
    				Site.redirect.delay(0,this,"/home/?msg=logo-error");
    			},
    			onCropSuccess: function(response){
    				Site.redirect.delay(0,this,"/home/?msg=logo-saved");
    			}
    		});
		}});
	},
	
	redirect: function(url){
		window.location = url;
	},
	
	search: function(){
		$('search').addEvent('submit', function(e){
			e.stop();
			var geocoder;
			geocoder = new GClientGeocoder();
			address = $('location').value;
			geocoder.getLocations(address, Site.getCoords);
		})
		
	},
	
	roar: function(){
	    new Asset.javascript('/js/Roar.js',{ onload : function(){
	        new Asset.css('/css/Roar.css');
	        var roar = new Roar({
        		position: 'topLeft',
        		duration: 5000 // 5 seconds until message fades out
        	});
        	Cookie.write('cookietest', '1', {path: '/', duration: 1});
        	var cookies = Cookie.read('cookietest') ? true : false;
            var chatnotified = Cookie.read('chatnotified') ? true : false;
    		if(!chatnotified && cookies){
        	    roar.alert('Check out our new CHAT ROOM!', 'Foxy Local Escorts now has a free chat room for members. <a href="/chat/" target="_blank">Click here</a> to check it out!');
        	    Cookie.write('chatnotified', '1', {path: '/', duration: 7});
        	}

	    }});
	}
}

window.addEvent('domready', function(){
	//Site.verify();
});

window.addEvent('load', function(){
	Site.start();
});

function in_array(string, array) {
   for (i = 0; i < array.length; i++) {
      if(array[i] == string) {
         return true;
      }
   }
   return false;
}

if (top.location != self.location) {
	top.location = self.location;
}
