/* Layout initialisieren */
function initLayout() {
   
    setTimeout(function(){ 
        setLines();          
    }, 300 );  
    
    jQuery(window).resize(function() {
      setLines(); 
    });
    
    //Platzhalter initialisieren
    jQuery('input').placeholder();
    
    //Formulare Validieren   
    validateForms();
     
}

/* Set Lines Postitions */
function setLines() {

    //IE 6 Ausgenommen
    if (!(jQuery.browser.msie && jQuery.browser.version.substr(0,1) < 7)) {
    
        var windowWidth = jQuery(window).width();
        
        // Positionen setzen
        jQuery(".lineButtonRight").each(function(i,e){
        
            offSet = jQuery('#'+this.id).offset();
            space = windowWidth - offSet.left;
            jQuery('#'+this.id+'Line').width(space-20);
            jQuery('#'+this.id+'Line').css("top", offSet.top+25+"px");
            jQuery('#'+this.id+'Line').css("left", offSet.left+20+"px");
            jQuery('#'+this.id+'Line').show();
            // Hover Verhalten setzen
            jQuery('#'+this.id).hover(
              function () {
                jQuery('#'+this.id+'Line').addClass('over');
              },
              function () {
                jQuery('#'+this.id+'Line').removeClass('over');
              }
            );                       
        });

        jQuery(".lineButtonLeft").each(function(i,e){
        
            offSet = jQuery('#'+this.id).offset();
            jQuery('#'+this.id+'Line').width(offSet.left+25);
            jQuery('#'+this.id+'Line').css("top", offSet.top+25+"px");
            jQuery('#'+this.id+'Line').show();          
            // Hover Verhalten setzen
            jQuery('#'+this.id).hover(
              function () {
                jQuery('#'+this.id+'Line').addClass('over');
              },
              function () {
                jQuery('#'+this.id+'Line').removeClass('over');
              }
            );            
        });
                
        // Toplines setzen

        jQuery("#siteNavigation li").each(function(i,e){
            jQuery('#'+this.id+'Line').width(windowWidth);
            jQuery('#'+this.id+'Line').show();          
            // Hover Verhalten setzen
            jQuery('#'+this.id).hover(
              function () {
                jQuery('#'+this.id+'Line').addClass('over');
              },
              function () {
                jQuery('#'+this.id+'Line').removeClass('over');
              }
            );            
        });
        
    }
}

/* Update Layout bei expandierenden Elementen -> Set Lines Postitions */
function updateLayout() {

    jQuery('.line').hide();
    setTimeout(function(){ 
        setLines();          
    }, 510 ); 
    
}

/* Animiertes Seiten verlassen */    
function slide2(target,what,direction) {
    
    var i = 1;
    
    what = jQuery(what).parent().attr("id");
    jQuery('.line').hide();
    jQuery('#'+what+'Line').show();
    jQuery('#'+what+'Line').addClass('over');
    
    if(direction == 'right') {
        slideDirection = '+';
    } else {
        slideDirection = '-';
    }
    
    var windowWidth = jQuery(window).width();
    var offSetElement = jQuery('#'+what).offset();

    jQuery('#siteMain,#siteAttractionBox').animate({
        opacity: 0,
        left: slideDirection+'='+(windowWidth-995)/2
    }, {
        duration: 500,
        step: function(){
            
            if(direction == 'right') {
                jQuery('#'+what+'Line').width(offSetElement.left+25);
                jQuery('#'+what+'Line').css("background-position", 100-(i/2)+"% top");
            } else {
                jQuery('#'+what+'Line').css('left',offSetElement.left+20);
                jQuery('#'+what+'Line').width((offSetElement.left-windowWidth)*-1-20);
                jQuery('#'+what+'Line').css("background-position", "-"+i+"px top");
            }
            i = i+1;
            offSetElement = jQuery('#'+what).offset();
        },         
        complete: function() {
            location.href = target;
        }
    });   

}

/* Settings manipulations */
function toggleSetting() {
    jQuery('#settingMember').slideToggle();
    updateLayout();
}

function toggleProfil() {
    jQuery('#settingProfil').slideToggle();
    updateLayout();
}

function editSetting(what,where,hide) {
    
    if(hide) {    
        jQuery('#setting'+what).hide();
        jQuery('#settingButtons'+where).show();
    } else {
        jQuery('#settingButtons'+where).hide();
        jQuery('#setting'+what).show().find('input:first').focus();
    }
    
    jQuery('#ajax_msgs').hide();

    updateLayout();
}

function showMore(what,hide) {

    if(hide) {    
        jQuery('#mehr'+what).slideUp();
        jQuery('#mehrButton'+what).show();
    } else {
        jQuery('#mehrButton'+what).hide();
        jQuery('#mehr'+what).slideDown();
    }    

}

function validateForms() {

    // Validierung Registrierung
    jQuery("#memberRegister").validate({
        errorClass: "formError",
        validClass: "",
        errorElement: "nobr",
    
        rules: {
                emailFix: {
                  required: true,
                  email: true
                },
                passwort: {
                  required: true
                },
                passwort2: {
                  required: true,
                  equalTo: "#passwort"
                }
        },

        messages: {
                email:"",
                passwort:"",
                passwort2:""
        },
    
        errorPlacement: function(error, element) {
            error.appendTo(element.prev());
        },
        highlight: function(element, errorClass, validClass) {
            jQuery(element).parent().addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function(element, errorClass, validClass) {
            jQuery(element).parent().removeClass(errorClass);
            jQuery(element.form).find("label[for=" + element.id + "]").addClass(validClass);
        }
    }); 

    // Validierung Login
    jQuery("#memberLogin").validate({
        errorClass: "formError",
        validClass: "",
        errorElement: "nobr",
    
        rules: {
                emailFix: {
                  required: true,
                  email: true
                },
                passwort: {
                  required: true
                }
        },
    
        errorPlacement: function(error, element) {
            error.appendTo(element.prev());
        },
        highlight: function(element, errorClass, validClass) {
            jQuery(element).parent().addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function(element, errorClass, validClass) {
            jQuery(element).parent().removeClass(errorClass);
            jQuery(element.form).find("label[for=" + element.id + "]").addClass(validClass);
        }
    });

    // Validierung Einstellungen
    jQuery("#memberSettings").validate({
        errorClass: "formError",
        validClass: "",
        errorElement: "nobr",

        onsubmit: false,
        onfocusout: false,
        onkeyup: false,
        onclick: false,
    
        rules: {
                email: {
                  required: "#settingEmail:visible",
                  email: true
                },
                passwort1: {
                  required: "#settingPassword:visible"
                },
                passwort2: {
                  required: "#settingPassword:visible",
                  equalTo: "#passwort1"
                }
        },

        messages: {
                email:"",
                passwort1:"",
                passwort2:""
        },
    
        errorPlacement: function(error, element) {
            error.appendTo(element.prev());
        },
        highlight: function(element, errorClass, validClass) {
            jQuery(element).parent().addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function(element, errorClass, validClass) {
            jQuery(element).parent().removeClass(errorClass);
            jQuery(element.form).find("label[for=" + element.id + "]").addClass(validClass);
        }
    });

    // Validierung Profil
    jQuery("#memberProfil").validate({
        errorClass: "formError",
        validClass: "",
        errorElement: "nobr",
    
        rules: {
                aktuellerJob: {
                  required: true,
                  isNotAEMailAddress: true
                },
                aktuellerArbeitgeber: {
                  required: '#aktuelleBranche:blank',
                  isNotAEMailAddress: true
                },
                aktuelleBranche: {
                  required: '#aktuellerArbeitgeber:blank',
                  isNotAEMailAddress: true
                },
                aktuellerArbeitsort: {
                  required: true,
                  isNotAEMailAddress: true
                }                
        },
    
        errorPlacement: function(error, element) {
            error.appendTo(element.prev());
        },
        highlight: function(element, errorClass, validClass) {
            jQuery(element).parent().addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function(element, errorClass, validClass) {
            jQuery(element).parent().removeClass(errorClass);
            jQuery(element.form).find("label[for=" + element.id + "]").addClass(validClass);
        },
    
        submitHandler: function(form) {
            form.submit();
        }
    }); 

}

/**
 * add custom validator methods to jQuery.validator
 */
function addCustomValidators() {
	if (typeof jQuery.validator === 'undefined') return;
	
	// check if it's not a email address (RFC2822)
	jQuery.validator.addMethod('isNotAEMailAddress', function(value, element) {
		var value = element.value;
		
		var regexp = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/gi;
		var test = (!regexp.test(value));
		
		return test;
	}, '');
}

jQuery(document).ready(function() {
    addCustomValidators();
});

/*//////////////////////////////continousfilter*/
/*
jQuery.continousfilter = function(server,sprache) {
    
    jQuery(".autocomplete").autocomplete('http://'+window.location.hostname+'/ajax_synonym_cf.php', {
        width: parseInt(jQuery(".autocomplete").css("width"))+10,
        selectFirst: false,
        max: 20,
        scroll: false
    });
*/
    
    /*jQuery("#q-textSearch").result(function(event, data, formatted) {
        jQuery("input[name='ful_id']").val(data[1]);
        jQuery("input[name='syn_id']").val(data[2]);
    });*/

// };
/*//////////////////////////////*/

/**
 * Creates a continous filter at given element with the data returned by the defined script.
 * Adds for each resultElementsIds[1] a hidden form element which is appended to
 * the form with the id given by resultElementsIds[0].
 * Data(-set) which corresponds to the selected continous filter entry, is splitted
 * and saved within the hidden form fields.
 * 
 * Example:
 * resultElementIds = new Array('myform', new Array('col1', 'col2', 'col3'))
 * returned data(-set) = new Array('val1', 'val2', 'val3')
 * -> hidden form element 'col1' contains 'val1' at form 'myform'
 * -> hidden form element 'col2' contains 'val2' at form 'myform'
 * -> hidden form element 'col3' contains 'val3' at form 'myform'
 * 
 * @param jQueryObject element
 * @param string script which should be called at server-side and returns the data
 * @param array resultElementIds containing at index 0: the name of the form within the DOM, at index: 1 an array with names for new created hidden form elements.
 */
jQuery.ContinousFilter = function(element, script, resultElementIds, callback) {
    element.autocomplete(script, {
        width: parseInt(jQuery(".autocomplete").css("width")) + 10,
        selectFirst: false,
        max: 20,
        scroll: false
    });
    
    var form = jQuery('[name="'+ resultElementIds[0] +'"]');
    if (!form.length) return false;
    
    var hiddenFormFieldIds = resultElementIds[1]; // array; ids of the new hidden form elements
    
    jQuery.each(hiddenFormFieldIds, function(i, elementId) { // create and append hidden form fields
        if (form.find('[id="'+ elementId +'"]').length != 0) return true; // already exists...
        
        form.append('<input type="hidden" name="'+ elementId +'" id="'+ elementId +'" value="" />');
    });
    
    element.result(function(event, data, formatted) { // add result handler function to input element
        if (!data.length) return false;
        
    	jQuery.each(data, function(i, value) { // save each data entry (data is an array) within corresponding hidden form field
    		var hiddenField = jQuery('#'+ hiddenFormFieldIds[i]);
    		if (!hiddenField.length) return true;
    		
    		hiddenField.val(value);
    	})
    	
		if (callback) callback();
    });
    
    return true;
};
//---//




//---- JOBS.CH CODE COPY -----////


//------------------------------------------------------------------------------
var g_base64_table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

function base64_decode(encStr)
{
    var bits;
    var decOut = '';
    var i = 0;

    
    for(; i < encStr.length; i += 4)
    {
        bits = (g_base64_table.indexOf(encStr.charAt(i))     & 0xFF) << 18 |
        (g_base64_table.indexOf(encStr.charAt(i + 1)) & 0xFF) << 12 |
        (g_base64_table.indexOf(encStr.charAt(i + 2)) & 0xFF) <<  6 |
        (g_base64_table.indexOf(encStr.charAt(i + 3)) & 0xFF);

        decOut += String.fromCharCode((bits & 0xFF0000) >> 16, (bits & 0xFF00) >> 8, bits & 0xFF);
    }

    if(encStr.charCodeAt(i - 2) == 61)
      return(decOut.substring(0, decOut.length - 2));
    else if(encStr.charCodeAt(i - 1) == 61)
      return(decOut.substring(0, decOut.length - 1));
    else
      return(decOut);
}

var ID2Change;

function getContent(url, ID) {
    ID2Change = ID;
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        //alert(\'Giving up :( Cannot create an XMLHTTP instance\');
        return false;
    }
    http_request.onreadystatechange = getContents4Page;
    http_request.open('POST', url, true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var postText = 'ID2change=' + ID2Change + '&';
    for (var i = 0; i < document.login.elements.length; ++i) {
        if (document.login.elements[i].type == "checkbox" || document.login.elements[i].type == 'radio' ) {
            if (document.login.elements[i].checked) {
                postText = postText + '&' + document.login.elements[i].name +'='+document.login.elements[i].value;
            }
        } else {
            postText = postText + '&'  + document.login.elements[i].name +'='+document.login.elements[i].value;
        }
    }
    http_request.send(postText);
}


function getContents4Page() {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            var xmldoc = http_request.responseText;
            if (xmldoc.indexOf('go2_') == 0) {
                jQuery.fn.fancybox.close();
                var ziel = xmldoc.substring(4);
                if(ziel.indexOf('direktfav_') == 0) {
                    var tmp = ziel.split("_");
                    var iid = tmp[2];
                    var typ = tmp[1];
                    ziel = "/talentpool/bookmark.php?id="+iid+"&direktfav=1&typ="+typ;
                }
                if(ziel.indexOf('suchProfile.php') == 0) {
                    document.list.new_row_from_search.value = 1;
                }
                document.list.action='/de'+ziel;
                window.setTimeout("document.list.submit();", 10);
            }else {
                if (xmldoc.indexOf('go2ajax_') == 0) {
                    var ziel = xmldoc.substring(8);
                    getContentFromServer(ziel,'loginRefresh');
                } else {
                    //alert(ID2Change);
                    if(document.getElementById(ID2Change)) {
                        document.getElementById(ID2Change).innerHTML = xmldoc;
                    }
                }
            }
        }
    }
}

function validateEmail(email) {
    var s = email;
    var a = false;
    var res = false;
    if(typeof(RegExp) == 'function'){
        var b = new RegExp('abc');
        if(b.test('abc') == true){
            a = true;
        }
    }
    if(a == true){
        reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$');
        res = (reg.test(s));
    }else{
        res = (s.search('@') >= 1 &&
        s.lastIndexOf('.') > s.search('@') &&
        s.lastIndexOf('.') >= s.length-5)
    }
    if(res) {
        return true;
    }
}


function focusPasswort() {
    if(typeof(document.login) != "undefined") {
        if(document.login.passwort) {
            document.login.passwort.focus();
        } else {
            window.setTimeout("focusPasswort()", 500);
        }
    }
}

function focusEmail() {
    if(typeof(document.login) != "undefined") {
        if(document.login.emailFix) {
            document.login.emailFix.focus();
        } else {
            window.setTimeout("focusEmail()", 500);
        }
    }
}

function checkEnterLogin(e) {
    var characterCode
    if(e && e.which){
        e = e
        characterCode = e.which
    } else {
        //e = event
        characterCode = e.keyCode
    }
    if(characterCode == 13){
        loginModal();
        return false;
    } else {
        return true;
    }
}


	function StartCountUp() {

		if((countStart + countIntervall) < countEnde){
			countStart = countStart + countIntervall;
			formated_nr = number_format_ma(countStart);
			document.getElementById("counter").innerHTML = formated_nr;
			setTimeout('StartCountUp()',Math.floor(200*Math.random()));
		} else {
			formated_nr = number_format_ma(countEnde);
			document.getElementById("counter").innerHTML = formated_nr;
		}
	}

	function StartCountDown() {

		if((countStart - countIntervall) > countEnde){
			countStart = countStart - countIntervall;
			formated_nr = number_format_ma(countStart);
			document.getElementById("counter").innerHTML = formated_nr;
			setTimeout('StartCountDown()',Math.floor(200*Math.random()));
		} else {
			formated_nr = number_format_ma(countEnde);
			document.getElementById("counter").innerHTML = formated_nr;
		}
	}



        function number_format_ma(n) {
	var txt = new String(n);
	var returnvalue = txt;
	var txtlength = txt.length;
	if (txtlength > 3) {
		var ganze = Math.floor(txtlength/3);
		var rest = txtlength % 3;
		returnvalue = txt.substr(0,rest);
		for(i=0;i<ganze;i++) {
			returnvalue = returnvalue + "'" + txt.substr(rest+i*3,3);
		}
	}
	return returnvalue;

}

function checkAll(nameElemente) {
   for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name && document.list.elements[i].name.indexOf(nameElemente) == 0 ) {
		   document.list.elements[i].checked = true;
	   }
   }
}

function checkNone(nameElemente) {
   for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name && document.list.elements[i].name.indexOf(nameElemente) == 0 ) {
		   document.list.elements[i].checked = false;
	   }
   }
}

function checkAllInDiv(divID, nameElemente) {
   for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name.indexOf(nameElemente) == 0 && document.list.elements[i].parentNode.parentNode.id == divID) {
			document.list.elements[i].checked = true;
	   }
   }
}

function invertCheckAll(nameElemente) {
   for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name.indexOf(nameElemente) == 0 ) {
		   document.list.elements[i].checked = !(document.list.elements[i].checked);
	   }
   }
}

function validateCheckboxes(nameElemente) {
	var auswahlCheckboxen = 0;
	for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name && document.list.elements[i].name.indexOf(nameElemente) == 0  && document.list.elements[i].checked == true) {
			auswahlCheckboxen++;
	   }

	}

	if(auswahlCheckboxen >0) {
		return true;
	} else {
		return false;
	}
}

function checkExistenz(nameElemente, typ) {
	var counter = 0;
	for (var i = 0; i < document.list.elements.length; i++) {
	   if( document.list.elements[i].name && document.list.elements[i].name.indexOf(nameElemente) == 0 && document.list.elements[i].type == typ) {
			counter++;
	   }

	}
	return counter;
}


function isNumeric(sText)
{
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++)
    {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1)
        {
            IsNumber = false;
        }
    }
    return IsNumber;

}


var ID2Change;
function getContentFromServer(url, ID) {
    ID2Change = ID;
    http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml; charset=ISO-8859-1');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        //alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    if(url == "/direktLogin_ajax.php") {
    	http_request.onreadystatechange = getContents4PageLogin;
	} else {
		http_request.onreadystatechange = getContents4Page;
	}

    http_request.open('POST', url, true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var postText = 'ID2change=' + ID2Change + '&';
    for (var i = 0; i < document.forms[0].elements.length; ++i) {
        if (document.forms[0].elements[i].type == "checkbox" || document.forms[0].elements[i].type == 'radio' ) {
            if (document.forms[0].elements[i].checked) {
                postText = postText + '&' + document.forms[0].elements[i].name +'='+document.forms[0].elements[i].value;
            }
        } else {
            postText = postText + '&'  + document.forms[0].elements[i].name +'='+document.forms[0].elements[i].value;
        }
    }
    http_request.send(postText);
}

function showHide(name){
	var obj = document.getElementById(name);
	var stl = obj.style;
	if (!stl.display || stl.display == "none"){
		stl.display = "block";
		if(name.indexOf('hilfe') == 0){
			document.getElementById("hilfeLink").style.backgroundImage = 'url(\'//img.jobs.ch/www/img/icon_hilfe_grey.gif\')';
			}
	}else{
		stl.display = "none";
		if(name.indexOf('hilfe') == 0){
			document.getElementById("hilfeLink").style.backgroundImage = 'url(\'//img.jobs.ch/www/img/icon_hilfe.gif\')';
		}
	}
}

