//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();

    if(!firstTime) {
        checkProfileActive();
    }

    firstTime = false;
});

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();
                //});

                ajaxGet($('#content'),'action=quickSearch&quickSearch');
            }
        } 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=="") {
            var loc = document.location;
            //loc = loc.replace(/http:\/\/www.seksgezocht.com\/\?/,"");

            if(loc&&loc=="") {
                if(getPageFromUrl()) {
                    location = "#"+getPageFromUrl();
                } else {
                    location = "#home";
                }
            } 
        } else {
            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 getPageFromUrl() {
    var data = location+"";
    data = data.split("?");
    if(data[1]) {
        if(data[1].search("page")!=-1) {
            data = data[1].split("=");
            return data[1];
        }
    }
    return null;
}

function changeLocation(hash) {
    if(hash.search(/\//) != -1) {
        hash = hash.replace(/\//," / ");
    }

    if(globalHash.search(/advertentie/)!=-1) {
        hash = hash.split("/");
        $('#locationTitle').html("advertentie <span class=\'pink\'>/</span> "+chopString(hash[1],25));
    } else {
        hash = hash.replace(/\//,"<span class=\'pink\'>/</span>");
        $('#locationTitle').html(hash);
    }
}

function chopString(string,length) {
    if(string.length>length) {
        for(i=length;i>0;i--) {
            if(string[i] == " ") {
                return string.substr(0,i)+"..";
            }
        }
    } 
    return string;    
}



//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 {
                $(element).bind ("click",function(){
                    var pageTracker = _gat._getTracker('UA-XXXXX-X');
                    pageTracker._trackPageview();
                    if(pageTracker) {
                        pageTracker._trackPageview("?"+action);
                    }
                });
            }
        } else {
								
            var target = $(element).attr("targetElement");	
            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').prepend('<div id="sideBar"></div>');
        $('#sideBar').corner("6px keep");
        $('#wrapper').width(1220);
		
        ajaxGet($('#sideBar'),'page=sideBar',function() {
            $('#sideBar').fadeTo(1300,0.8);
        });
    } else {
        $("#category a").css("font-size","11px");
        $('#maartje').css("margin-left","400px");
        $('#blackArea').css("width","930px");
        $('#purpleArea').css("width","930px");
    }
}
