//.hover(mouseenter, mouseleave)
dojo.NodeList.prototype.hover = function(over, out){
    return this.onmouseenter(over).onmouseleave(out || over);
}

function handleEnterKeys(evt) {
    evt.preventDefault();
    return false;
}

function preventSubmit(evt) {
    var code = '';
    if (window.event) {     // IE
        code = e.keyCode;
    }
    else if (e.which) {     // Netscape/Firefox/Opera
        code = e.which;
    }
    if (code == 13) {       // Enter Key pressed
        return false;
    }
}

function jumpToDestination(dest) {
    window.location = dest;
}

function createRequestString(formname) {
    theform = document.getElementById(formname);
    var reqStr = "";
    for(i=0; i < theform.elements.length; i++) {
        isformObject = false;
        switch (theform.elements[i].tagName) {
            case "INPUT":
                switch (theform.elements[i].type) {
                    case "text":
                    case "hidden":
                        reqStr += theform.elements[i].name + "=" + encodeURIComponent(theform.elements[i].value);
                        isformObject = true;
                        break;
                    case "checkbox":
                        if (theform.elements[i].checked) {
                            reqStr += theform.elements[i].name + "=" + theform.elements[i].value;
                        } else {
                            reqStr += theform.elements[i].name + "=";
                        }
                        isformObject = true;
                        break;
                    case "radio":
                        if (theform.elements[i].checked) {
                            reqStr += theform.elements[i].name + "=" + theform.elements[i].value;
                            isformObject = true;
                        }
                        break;
                }
                break;
            case "TEXTAREA":
                reqStr += theform.elements[i].name + "=" + encodeURIComponent(theform.elements[i].value);
                isformObject = true;
                break;
            case "SELECT":
                var sel = theform.elements[i];
                reqStr += sel.name + "=" + sel.options[sel.selectedIndex].value;
                isformObject = true;
                break;
        }
        if ((isformObject) && ((i+1)!= theform.elements.length)) {
            reqStr += "&";
        }
    }
    return reqStr;
}

function getCheckedRadioValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function collectCheckboxValues(srcCheckboxField){
    var returnString = '';
    for(var i=0; i < srcCheckboxField.length; i++){
        if(srcCheckboxField[i].checked) {
            returnString += srcCheckboxField[i].value + ';';
        }
    }
    return returnString;
}

function empty(mixed_var) {
    var key;
    if (mixed_var === "" ||
        mixed_var === 0 ||
        mixed_var === "0" ||
        mixed_var === null ||
        mixed_var === false ||
        mixed_var === undefined
    ){
        return true;
    }
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }
        return true;
    }
    return false;
}
function findPosX(obj) {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

function findPosY(obj) {
    var curtop = 0;
    if(obj.offsetParent)
        while(1) {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}

function numberFormat(nStr){
      nStr += '';
      x = nStr.split('.');
      x1 = x[0];
      x2 = x.length > 1 ? '.' + x[1] : '';
      var rgx = /(\d+)(\d{3})/;
      while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
      return x1 + x2;
}

function nl2br(str) {
  var breakTag = '<br />';
  return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}

function slideScreen(nodename, pixels) {
    var posY = findPosY(dojo.byId(nodename));
    dojo.fx.slideTo({ node:nodename, left:pixels, top:posY, unit:"px", duration:600, easing:dojo.fx.easing.quadOut }).play();
}

function replaceContentWithFade(responseNode, innerCode, postFunc) {
	var IE6 = navigator.appVersion.indexOf("MSIE 6.") != -1;
	var IE7 = navigator.appVersion.indexOf("MSIE 7.") != -1;

	if (!IE6 && !IE7) {
	    //var anim = dojo.fadeOut({ node:responseNode });
	    var anim = dojo.animateProperty({node:responseNode, duration: 200, properties:{opacity:0}});
	    dojo.connect(anim,"onEnd",function(){
	        dojo.byId(responseNode).innerHTML = innerCode;
	        var anim = dojo.fadeIn({ node:responseNode });
	        if (typeof postFunc != 'undefined') {
	          dojo.connect(anim,"onEnd",function(){
	              postFunc();
	          });
	        }
	        anim.play();
	    });
	    anim.play();
	} else {
		dojo.byId(responseNode).innerHTML = innerCode;
		if ((typeof postFunc !== 'undefined') && (typeof postFunc !== 'Undefined')) {
			postFunc();
		}
	}
}

function fadeNodeOut(nodeName) {
    var anim = dojo.fadeOut({ node:nodeName });
    dojo.connect(anim,"onEnd",function(){
    	dojo.byId(nodeName).style.display = 'none';
    });
    anim.play();
}

function fadeNodeIn(nodeName) {
	dojo.byId(nodeName).style.display = 'block';
    var anim = dojo.fadeIn({ node:nodeName });
    anim.play();
}

function wipeNodeIn(nodeName) {
	if (dojo.byId(nodeName).style.display == 'none') {
	    var wipeArgs = {
	        node: nodeName,
	        duration: 500
	    };
	    dojo.fx.wipeIn(wipeArgs).play();
	}
}
function wipeNodeOut(nodeName) {
    var wipeArgs = {
        node: nodeName,
        duration: 500
    };
    dojo.fx.wipeOut(wipeArgs).play();
}

function renderDate(unixTimestamp) {
	var date = new Date(unixTimestamp*1000);
	var month = date.getMonth();
	var day = date.getDate();
	var year = date.getFullYear();
	var formattedTime = month+1 + '/' + day + '/' + year;
	return formattedTime;
}

function renderMediumDate(unixTimestamp) {
	var d = new Date(unixTimestamp*1000);
	var d_names = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

	var curr_day = d.getDay();
	var curr_date = d.getDate();
	var curr_month = d.getMonth();
	var curr_year = d.getFullYear();

	var curr_hour = d.getHours();
	if (curr_hour < 12) {
	   a_p = "am";
	} else {
	   a_p = "pm";
	}
	if (curr_hour == 0) {
	   curr_hour = 12;
	}
	if (curr_hour > 12) {
	   curr_hour = curr_hour - 12;
	}
	var curr_min = d.getMinutes();
	curr_min = curr_min + "";

	if (curr_min.length == 1) {
	   curr_min = "0" + curr_min;
	}
	return (m_names[curr_month] + ' ' + curr_date + ', ' + curr_year + ' at ' + curr_hour + ':' + curr_min + a_p);
}

function renderLongDate(unixTimestamp) {
	var d = new Date(unixTimestamp*1000);
	var d_names = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

	var curr_day = d.getDay();
	var curr_date = d.getDate();
	var curr_month = d.getMonth();
	var curr_year = d.getFullYear();

	var curr_hour = d.getHours();
	if (curr_hour < 12) {
	   a_p = "am";
	} else {
	   a_p = "pm";
	}
	if (curr_hour == 0) {
	   curr_hour = 12;
	}
	if (curr_hour > 12) {
	   curr_hour = curr_hour - 12;
	}
	var curr_min = d.getMinutes();
	curr_min = curr_min + "";

	if (curr_min.length == 1) {
	   curr_min = "0" + curr_min;
	}
	return (d_names[curr_day] + ', ' + m_names[curr_month] + ' ' + curr_date + ', ' + curr_year + ' at ' + curr_hour + ':' + curr_min + a_p);
}

function advancePage(formname) {
	dojo.byId(formname).pg.value = parseInt(dojo.byId(formname).pg.value) + 1;
}


String.prototype.ellipsise = function(toLength, where, ellipsis) { // 'where' is one of ['front','middle','end'] -- default is 'end'
	if (toLength < 1) return this;
	ellipsis = ellipsis || '\u2026';
	if (this.length < toLength) return this;
	switch (where) {
		case 'front':
			return ellipsis + this.substr(this.length - toLength);
			break;
		case 'middle':
			return this.substr(0, toLength / 2) + ellipsis + this.substr(this.length - toLength / 2)
			break;
		case 'end':
		default:
			return this.substr(0, toLength) + ellipsis;
			break;
	}
}

function emailCheck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail Address");
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail Address");
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail Address");
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail Address");
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail Address");
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail Address");
		    return false;
		 }

		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail Address");
		    return false;
		 }

 		 return true;
	}

function ValidateEmail(emailField){
	var emailID=dojo.byId(emailField).email;

	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please Enter your Email Address");
		emailID.focus();
		return false;
	}
	if (emailCheck(emailID.value)==false){
		emailID.value="";
		emailID.focus();
		return false;
	}
	return true;
 }

 function rawurlencode (str) {
    // URL-encodes string
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/rawurlencode
    // +   original by: Brett Zamir (http://brett-zamir.me)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Michael Grier
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Joris
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // %        note 2: Please be aware that this function expects to encode into UTF-8 encoded strings, as found on
    // %        note 2: pages served as UTF-8
    // *     example 1: rawurlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin%20van%20Zonneveld%21'
    // *     example 2: rawurlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: rawurlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    str = (str + '').toString();

    // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
    // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
    replace(/\)/g, '%29').replace(/\*/g, '%2A');
}

 function mchPrepare(str){
	//str = str.replace(" ", "-");
	str = str.replace("/", " ");
	str = str.replace(/[^a-zA-Z0-9\s]/g, "");
	str = str.replace(/\s+/g,"-");
	str = rawurlencode(str);
	return str + "";
 }
