//history init
var globalHash = '';
var inProgresEvent = null;
var firstTime = true;

$(document).ready(function(){
    
    //Initialize history plugin.
    $.historyInit(pageload, "blank.html"); 
    
    $('#javascriptError').html("");
	
	if(document.location.hash == '') {
		if(jQuery.browser.version != "7.0") {
			pageload('');
		}
    }
	
	setTimeout("extend()",1000);
	
	//css
	if(!$.browser.msie) {
		$('#category').corner("round bottom 6px");
		$('#category a').corner("4px bottom keep");
		$('#loadingHolder').corner("4px");
		$('#transparentBackground').corner("4px");
		$('#transparentBorder').corner("6px");
	}
	
	$('#loadingHolder').css("marginLeft",($(window).width()-$('#loadingHolder').width())-16);
	
	//the first time the main link needs to be reformed
	checkLinks();
});

function roundButtons() {
	if(!$.browser.msie) {
		$('.buttonBig').corner("6px");
		$('.button').corner("6px");	
		$('.buttona').corner("6px");
	}
}


//navigation rules
function pageload(hash) {
	globalHash = hash;
		
	if(hash.search(/advertentie/) != -1&&hash.search(/mijnadvertentie/) == -1) {
		hash = hash.replace(/advertentie\//,'');
		var hashData = hash.split("/");
		var id = hashData[0];
		var title = hashData[1];
		
		ajaxGet($('#content'),'page=advertentie&id='+id+'&advertentie='+title,function() {
			changeLocation(hash);		
			$('#profileFotos a').lightBox();
			roundButtons();
		});
		
	} else if(hash.search(/mijnprofiel/) != -1) {
		ajaxGet($('#content'),'page='+hash,function(content) {
			changeLocation(hash);	
			$('#photoList .photo').lightBox();
			roundButtons();
		});
		
	} else if(hash.search(/registreren/) != -1) {
		lockProfileView();
		ajaxGet(null,'page='+hash,function(content) {
			makePopup(content,'registreer nu!',600,null,null,unLockProfileView);
			changeLocation(hash);	
			roundButtons();
		});
		
	} else if(hash.search(/beheer/) != -1) {
		var hashData = hash.split("/");		
		ajaxGet($('#content'),'page=beheer&'+hashData[1],function() {	
			$("#tabs").tabs();
			changeLocation(hash);	
			roundButtons();
		});
		
	} else if(hash.search(/zoeken/) != -1) {
		var hashData = hash.split("/");		
		
		if(hash.search(/mainSearch/)==-1) {
			if(!hashData[1]) {
				ajaxGet($('#content'),'page='+hash,function(content) {
					changeLocation(hash);
					roundButtons();
				});
			} else {				
				ajaxPost($('#content'),'quickSearchForm',function() {
					changeLocation(hash);					
					roundButtons();
				});
			}
		} else {
			$.post("servlet.php", hashData[1]+"&ajax=true&formName=searchForm",function(content) {
				unsetLoading();
				makeContent($('#content'),content);				
				roundButtons();
			});	
		}
		
	} else if(hash.search(/adverteren/ ) != -1) {
		var hashData = hash.split("/");
		if(hashData[1]&&hashData[1]=='verander') {
			ajaxGet(null,'view=popup/mutateAll&verander=verander',function(content) {
				makePopup(content,'verander je advertentie en profiel',950);
			});
		} else {
			closePopup();
			ajaxGet($('#content'),'page='+hashData[0]+'&'+data,function() {
				changeLocation(hash);				
				roundButtons();
			});
		}
		
	} else if(hash.search(/categorie/ ) != -1) {
		var hashData = hash.split("/");
		var category = hashData[1];
		var page = hashData[2];
		
		if(!page) {
			page = 0;	
		}
		
		ajaxGet($('#content'),'category='+category+'&atPage='+page,function() {	
			if(page>0) {
				jumpTo('categorie');	
			}
			changeLocation(hash);	
			
			roundButtons();
		});		
		
	} else {
		if(hash==""||hash=="firstTime"&&firstTime) {
			firstTime = false;
			ajaxGet(null,'view=popup/firstTime',function(content) {
				makePopup(content,'Welkom op seksgezocht',400);
			});
			
			hash = "home";	
			globalHash = hash;
		}
		var hashData = hash.split("/");		
		var data = '';
		if(hashData[1]) { 
			var varSeg = hashData[1].split("=");
			if(!varSeg[1]) {
				data = hashData[1]+'='+hashData[1];
			} else {
				data = hashData[1];
			}
		}
		ajaxGet($('#content'),'page='+hashData[0]+'&'+data,function() {
			changeLocation(hash);			
			roundButtons();
		});
	}
}

function changeLocation(hash) {
	if(hash.search(/\//) != -1) {
		hash = hash.replace(/\//," / ");
	}	
	//document.title = 'Seksgezocht.com / '+hash;
	
	hash = hash.replace(/\//,"<span class=\'pink\'>/</span>");
	$('#locationTitle').html(hash);
}

//saved input values when focus applies
var savedValues = [{}];

//rewrite links if javascript is enabled
function checkLinks(object) {
	
	if(!object) {
		object = $("body");	
	}
	
	$(object).find("form").submit(function() {
	    return false;
	});
	
	$(object).find("[rel]").each(function(){
		checkLink(this);        
	});	
	
	$(object).find("input").each(function() {
		clearField(this);
	});
		
	$(object).find(":button").each(function() {
							    	   
		var target = $(this).attr("targetElement");
		var form = $(this).attr("formName");
		var getFunction = $(this).attr("function");		
		var functionName = globalEval(getFunction);		
		var ownerFunction = globalEval($(this).attr("ownerFunction"));
		var message = $(this).attr("message");
			
		if(form) {
			$(this).unbind("click");
			$(this).bind("click",function(e){
				e.stopPropagation();
											
				if(!target) {
					target = 'undefined';
				}
				
				if(ownerFunction) { 
					ownerFunction();
				
				} else {
					ajaxPost(null,form,function(answer) {					
						if(functionName) {
							functionName(answer,message,target);
						} else {
							formHandler(answer,message,target);	
						}
						
						checkLinks(target);
					});
				}
				
				return false;
			});
		}
    });
}

function globalEval(src) {
	//if (window.execScript) {
	//    return window.execScript(src);
	//} else {
    //	return eval.call(null,src);
	//}
	return eval(src);
}

function checkLink(element) {
	var action = $(element).attr("href");
	var rel = $(element).attr("rel");
	
	if(action&&action.search(/\?.*=.*/)!=-1) {
		action = action.match(/\?.*=.*/);
		action[0] = action[0].replace("?","");
		var dataSeg = action[0].split("&");	
							
		if(rel=="history") {  
			var uri = '#';
			var keepData = $(element).attr("keepData");
												
			if(keepData) {
				var varSeg = dataSeg[0].split("=");
				uri += varSeg[1]+"/";
				for(var i=1;i<dataSeg.length;i++) {
					uri += dataSeg[i];
					if(dataSeg.length-1!=i) {
						uri += "&";
					}
				}	
			} else {
				for(var i=0;i<dataSeg.length;i++) {
					var varSeg = dataSeg[i].split("=");
					if(i>0) {
						uri += '/';
					}
					uri += varSeg[1];
				}				
			}
			
			$(element).attr("href",uri);		
			
			//if client has ie7 enable history
			if(jQuery.browser.version == "7.0") {
				$(element).unbind("click");
				$(element).bind ("click",function(){			
					var hash = $(element).attr("href");
					hash = hash.replace(/^.*#/, '');
					$.historyLoad(hash);
				});
			}				
		} else {
								
			var target = $(element).attr("targetElement");	
			var action = $(element).attr("href").match(/\?.*=.*/);
					
			var afterFunction = globalEval($(element).attr("afterFunction"));				
			var beforeFunction = globalEval($(element).attr("beforeFunction"));
			
			var error = $(element).attr("message");			
							
			if(!target) {
				target = 'undefined';
			}		
			
			action[0] = action[0].replace("?","");
							
			$(element).unbind("click");
						
			if(rel=="popup") {				
				var newTitle = $(element).attr("popupTitle");
				var newWidth = $(element).attr("popupWidth");
				var closeFunction = globalEval($(element).attr("closeFunction"));
						
				if(!newWidth) {
					newWidth = 300;	
				} else {
					newWidth = parseInt(newWidth);	
				}
				
				$(element).bind ("click",function(e) {
					if(inProgresEvent!=action[0]) {
						inProgresEvent = action[0];
						ajaxGet(null,action[0],function(content) {		
							makePopup(content,newTitle,newWidth,beforeFunction,afterFunction,closeFunction);
						});
					}
					return false;
				});						
				
			} else if(rel=="hint") {
				//$(element).unbind("click");
				$(element).bind("click",function(e) {
					e.stopPropagation();
					
					if(inProgresEvent!=action[0]) {
						inProgresEvent = action[0];
						
						if($('#hint').length>0){
							$('#hint').remove();	
						}

						$("body").prepend('<div class="hint" id="hint"></div>');
						
						if(beforeFunction)
							beforeFunction();
						
						ajaxGet($(target),action[0],function(content) {
							$('#hint').html(content);
							checkLinks($("#hint"));
							var offset = $(element).offset();
							$('#hint').css({"marginLeft" : offset.left, "marginTop" : offset.top-42 });
							if(afterFunction) {
								afterFunction();
							}
						});
					}
					return false;
				});
				
			} else if(rel == "iframe") {
				$(element).bind ("click",function(e) {
					if(inProgresEvent!=action[0]) {
						inProgresEvent = action[0];
						
						$(target).html('<iframe src="servlet.php?'+action+'"></iframe>');
					}
					return false;
				});	
				
			} else {
				var noView = $(element).attr("noView");
				var message = $(element).attr("message");
				var stopLink = $(element).attr("stopLink");
				
				var extra = '';
				if(noView) {
					extra = '&noView=true';	
				} else {
					extra = '';
				}
								
				//$(element).unbind("click");
				$(element).bind ("click",function(e) {	
					//e.stopPropagation();
					if(inProgresEvent!=action[0]) {
						inProgresEvent = action[0];
						if(beforeFunction)
							beforeFunction();
							
						if(!stopLink) {
							ajaxGet($(target),action[0]+extra,function(answer) {
								answer = parseAnswer(answer);
								
								if(afterFunction) {
									afterFunction(message,answer);
								} else {								
									if(answer.success) {
										showSimpelMessage(message,answer.success,'green');
									} else {
										showSimpelMessage(message,answer.error,'red');
									}
								}
								
							});				
						} else {
							if(afterFunction) {
								afterFunction(content);
							}
							inProgresEvent = "";
						}
					}
					return false;
				});
			}	
		}
	}
}

function extend() {
	if($(window).width()>1024) {		
		$('#wrapper').append('<div id="sideBar"></div>');		
		$('#sideBar').corner("6px keep");		
		
		//$('#wrapper').animate({ width: 1220 },1200,function() {
		$('#wrapper').width(1220);													  
		
		ajaxGet($('#sideBar'),'page=sideBar',function() {
			$('#sideBar').fadeIn(1300,function() { 
				$('#sideBar').fadeTo(1300,0.6); 
			}).mouseenter(function() {
				$('#sideBar').fadeTo(300,1.0); 
			}).mouseleave(function() {
				$('#sideBar').fadeTo(300,0.6); 
			});
 		});
	}	
}

//function slider() {
//	//Show Banner
//	$(".main_image .desc").show(); //Show Banner
//	$(".main_image .block").animate({ opacity: 0.85 }, 1 ); //Set Opacity
//
//	//Click and Hover events for thumbnail list
//	$(".image_thumb ul li:first").addClass('active'); 
//	$(".image_thumb ul li").click(function(){ 
//		//Set Variables
//		var imgAlt = $(this).find('img').attr("alt"); //Get Alt Tag of Image
//		var imgTitle = $(this).find('a').attr("href"); //Get Main Image URL
//		var imgDesc = $(this).find('.block').html(); 	//Get HTML of block
//		var imgDescHeight = $(".main_image").find('.block').height();	//Calculate height of block	
//		
//		if ($(this).is(".active")) {  //If it's already active, then...
//			return false; // Don't click through
//		} else {
//			//Animate the Teaser				
//			$(".main_image .block").animate({ opacity: 0, marginBottom: -imgDescHeight }, 250 , function() {
//				$(".main_image .block").html(imgDesc).animate({ opacity: 0.85,	marginBottom: "0" }, 250 );
//				$(".main_image img").attr({ src: imgTitle , alt: imgAlt});
//			});
//		}
//		
//		$(".image_thumb ul li").removeClass('active'); //Remove class of 'active' on all lists
//		$(this).addClass('active');  //add class of 'active' on this list only
//		return false;
//		
//	}) .hover(function(){
//		$(this).addClass('hover');
//		}, function() {
//		$(this).removeClass('hover');
//	});
//			
//	//Toggle Teaser
//	$("a.collapse").click(function(){
//		$(".main_image .block").slideToggle();
//		$("a.collapse").toggleClass("show");
//	});
//	
//}