//SuckerFish hover
$.fn.hoverClass = function(c) {
	return this.each(function(){
		$(this).hover( 
			function() { $(this).addClass(c);  },
			function() { $(this).removeClass(c); }
		);
	});
};	


// PARAMETER FUNCTIONS
function paramsToPath(obj,del1,del2) {
	if(obj) {
		var pairs = [];
		var path = "";
		var del1 = del1;
		var del2 = del2;
		$.each(obj, function(i,val) { 
			if(val!=""){ pairs.push(i+del1+encodeURIComponent(val)); }//values are encoded to pass urls etc. 
		});
		path = pairs.join(del2);
		return path;
	}
}
function getParams(from) {
	var params = {};
	if($(from).attr("params")) {
		var paramset = decodeURIComponent($(from).attr("params"));//values are decoded to make urls usable again.
		var splitex = /,(?=[^,]+?:)/;
		$.each(paramset.split(splitex), function(){		
			var thiskey = this.split(":")[0];
			// var thisval = this.split(":")[1]; 
			// enhanced for url
			var thisval = trim(this.substr(this.split(":")[0].length+1,this.length));
			// get values from other attributes  
			if(thisval.substr(0,4)=="get(") {
				var tmpval = thisval.substr(4,thisval.length);
				tmpval = tmpval.substr(0,tmpval.length-1);
				var thisval = $(from).attr(tmpval);
				}		
			tmpobj = {};
			eval("tmpobj." + thiskey + "=thisval");
			jQuery.extend(params,tmpobj);	
		});
		return params;
	}
}
function setParam(from,setkey,setval) {	
	var params = getParams(from);
	tmpobj = {};
	eval("tmpobj." + setkey + "=setval");
	jQuery.extend(params,tmpobj);
	$(from).attr("params",paramsToPath(params,":",","));
}

// PATH FUNCTIONS
function parsePath(searchstring) {
	var crumbs = location.pathname.split("/");
	var nextcrumb = false;
	$.each(crumbs, function(i,val) {
      if(val==searchstring){ 
      	nextcrumb = crumbs[i+1];
      };
    });	
    return nextcrumb; 
	/*  
	non-jquerified: 
	for (var i=0;i<=nodes.length-1;i++){
		if (nodes[i]==searchstring){
			//return nodes[i+1];
			alert(nodes[i+1]);
			}
		}
	*/	
}


//TRACK N TRACE
function trackPackage(id) {
	var url = "http://sporing.bring.no/sporing/KMSporingslink.aspx?PackageNumber="+id;
	var width  = 900;
	var height = 600;
	var left   = (screen.width  - width)/2;
	var top    = (screen.height - height)/2;
	var params = 'width='+width+', height='+height;
	params += ', top='+top+', left='+left;
	params += ', directories=no';
	params += ', location=no';
	params += ', menubar=no';
	params += ', resizable=no';
	params += ', scrollbars=yes';
	params += ', status=yes';
	params += ', toolbar=no';
	newwin=window.open(url,'trackwindow', params);
	if (window.focus) {newwin.focus()}
	return false;
	}

//EMAIL VALIDERING
function emailcheck(val){
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    if (filter.test(val)) return true;
    else return false;
}

// TRIM
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

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;
}

function isValidURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
    	if(url == "localhost.localdomain.xyz") {
    		return true;
    	} else {
    		return false;
    	}
    }
} 

function verifyIP (IPvalue) {
	errorString = "";
	theName = "IPaddress";
	
	var ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
	var ipArray = IPvalue.match(ipPattern);
	
	if (IPvalue == "0.0.0.0")
	errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
	else if (IPvalue == "255.255.255.255")
	errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
	if (ipArray == null)
	errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
	else {
	for (i = 0; i < 4; i++) {
	thisSegment = ipArray[i];
	if (thisSegment > 255) {
	errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
	i = 4;
	}
	if ((i == 0) && (thisSegment > 255)) {
	errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
	i = 4;
	      }
	   }
	}

	return errorString;
}

 function isInteger (s) {
      var i;
      for (i = 0; i < s.length; i++){
         var c = s.charAt(i);

         if (!isDigit(c)) return false;
      }

      return true;
}
   
function isDigit (c)  {
      return ((c >= "0") && (c <= "9"))
   }
   
 function timesCharIsInString(char,string){
	var times = 0;
	for(var i=0;i<=string.length;i++){
		if(char == string.charAt(i))
			times++;
	}
	//alert(times);
	return times;
}
