reset_div = function(divname) {
    new Effect.Fade(divname);
}

/*
  url : url for the html request
  divname: the div to update
  form_params : query string  - a=bla&b=bla&c=bla
  method_type: either get or post - MUST BE IN LOWERCASE
  no_scroll: if set do not scroll the page to 'divname'
*/
load_ajax_page = function(url,divname,form_params,method_type, no_scroll) {
    
    if (!no_scroll) {
      new Effect.ScrollTo(divname, { offset:-50 });
    }

    if (!method_type) {
        method_type = 'get';
    }
    if (method_type == 'GET') {
        method_type = 'get';
    }
    if (method_type == 'POST') {
        method_type = 'post';
    }

    new Effect.Appear(divname);

    var dd = document.getElementById(divname);
    dd.innerHTML = "<img src='/pics/indicator.gif'> <b>Loading...</b>";

    new Ajax.Updater(divname, url, { 
                                    evalScripts:true,
                                    method: method_type,
                                    asynchronous:true,
                                    parameters: form_params 
                                    });

}

spellcheck = function(divname, default_uri, form_params, myform_name, myform_element) {

var dd = document.getElementById(divname);

if (myform_element && myform_name){
	var dy = document.getElementById('spellcheck_form_field');
	dy.value = "";
	dy.value = myform_element;
	form_params = Form.serialize(myform_name);
}

dd.innerHTML = "<img src='/pics/indicator.gif'> <b>Checking...</b>";

new Ajax.Updater(divname, default_uri + 'ajax/spellcheck.html', { 
                                                        evalScripts:true,
                                                        method: 'post',
                                                        parameters: form_params,
                                                        asynchronous:true
                                                    });
}


/* Functions for rollover images */
function MM_preloadImages() { 
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { 
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function P7_Snap() { 
 var g,x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,tw,q0,xx,yy,w1,pa='px',args=P7_Snap.arguments;a=parseInt(a);
 if(document.layers||window.opera){pa='';}for(k=0;k<(args.length);k+=4){
 if((g=MM_findObj(args[k]))!=null){if((el=MM_findObj(args[k+1]))!=null){
 a=parseInt(args[k+2]);b=parseInt(args[k+3]);x=0;y=0;ox=0;oy=0;p="";tx=1;
 da="document.all['"+args[k]+"']";if(document.getElementById){
 d="document.getElementsByName('"+args[k]+"')[0]";if(!eval(d)){
 d="document.getElementById('"+args[k]+"')";if(!eval(d)){d=da;}}
 }else if(document.all){d=da;}if(document.all||document.getElementById){while(tx==1){
 p+=".offsetParent";if(eval(d+p)){x+=parseInt(eval(d+p+".offsetLeft"));y+=parseInt(eval(d+p+".offsetTop"));
 }else{tx=0;}}ox=parseInt(g.offsetLeft);oy=parseInt(g.offsetTop);tw=x+ox+y+oy;
 if(tw==0||(navigator.appVersion.indexOf("MSIE 4")>-1&&navigator.appVersion.indexOf("Mac")>-1)){
  ox=0;oy=0;if(g.style.left){x=parseInt(g.style.left);y=parseInt(g.style.top);}else{
  w1=parseInt(el.style.width);bx=(a<0)?-5-w1:-10;a=(Math.abs(a)<1000)?0:a;b=(Math.abs(b)<1000)?0:b;
  x=document.body.scrollLeft+event.clientX+bx;y=document.body.scrollTop+event.clientY;}}
 }else if(document.layers){x=g.x;y=g.y;q0=document.layers,dd="";for(var s=0;s<q0.length;s++){
  dd='document.'+q0[s].name;if(eval(dd+'.document.'+args[k])){x+=eval(dd+'.left');y+=eval(dd+'.top');
  break;}}}e=(document.layers)?el:el.style;xx=parseInt(x+ox+a),yy=parseInt(y+oy+b);
 if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1){
  xx+=parseInt(document.body.leftMargin);yy+=parseInt(document.body.topMargin);}
 e.left=xx+pa;e.top=yy+pa;}}}
}

function P7_autoLayers() { 
 var g,b,k,f,u,k,j,args=P7_autoLayers.arguments,a=parseInt(args[0]);if(isNaN(a))a=0;
 if(!document.p7setc){p7c=new Array();document.p7setc=true;for(u=0;u<10;u++){
 p7c[u]=new Array();}}for(k=0;k<p7c[a].length;k++){if((g=MM_findObj(p7c[a][k]))!=null){
 b=(document.layers)?g:g.style;b.visibility="hidden";}}for(k=1;k<args.length;k++){
 if((g=MM_findObj(args[k]))!=null){b=(document.layers)?g:g.style;b.visibility="visible";f=false;
 for(j=0;j<p7c[a].length;j++){if(args[k]==p7c[a][j]) {f=true;}}
 if(!f){p7c[a][p7c[a].length++]=args[k];}}}
}

function P7_hideDiv(evt) { 
 var b,relT,mT=false; 
 if(document.layers){b=evt.target;if(b.p7aHide){
  new Effect.SlideUp(b)}else{routeEvent(evt);}
 }else if(document.all&&!window.opera){b=event.srcElement;
  while(b!=null){if(b.tagName=="DIV" && b.p7ahD){mT=true;break;}b=b.parentElement;}
  if(!b.contains(event.toElement)){new Effect.SlideUp(b);}
 }else if(document.getElementById){b=evt.currentTarget;relT=evt.relatedTarget;
  while(relT!=null){if(b==relT){mT=true;break;}
  relT=relT.parentNode;}if(!mT){new Effect.SlideUp(b)}}
}

function P7_autoHide() { 
 var i,g,args=P7_autoHide.arguments;
 for(i=0;i<args.length;i++){if((g=MM_findObj(args[i]))!=null){
  g.p7aHide=true;if(document.layers){
  g.captureEvents(Event.MOUSEOUT);}g.onmouseout=P7_hideDiv;g.p7ahD=true;}}
}
/* End Functions for rollover images */



// used for limiting number of characters in textarea form field.
function limitText(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } else {
        limitCount.value = limitNum - limitField.value.length;
    }
}

/* 
  Useful function to toggle a 'div' content called 'divname' when the user opt-in or opt-out checkbox 'checkbox_value' .
  divname:  string - name of the div to toggle.
  checkbox_value: boolean (true or false)
  reverse: boolean (true or false) - When set to true causes a check to hide the div instead of displaying it
  Example:  <input type="checkbox" name="bla" value="1" onChange="toggle_div_from_checkbox('product-details', this.checked)">
*/
function toggle_div_from_checkbox(divname, checkbox_value, reverse) {
  if (checkbox_value == true) {
    if (reverse) {
      new Effect.SlideUp(divname);
    } else {
      new Effect.SlideDown(divname);
    }
  } else if (checkbox_value == false) {
    if (reverse) {
      new Effect.SlideDown(divname);
    } else {
      new Effect.SlideUp(divname);
    }
  }

}
/*
	Useful function to count characters entered in a textfield
	fieldname: - required - name of field
	chars: - required - current character count
	chars_remaining: - required - characters remaining
	maxchars: - required - maximum characters allowed
	enforce_limit: - optional - do not allow anymore character input
*/
function charCount(fieldname, chars, chars_remaining, maxchars, enforce_limit) {
                var len = encodeURIComponent(document.getElementById(fieldname).value).replace(/%../g, 'x').length;
		document.getElementById(chars).innerHTML = len;
		
                var text;
		text = "";
		if (maxchars >= len) {
			text = maxchars - len;
			text = text + " characters remaining.";
			document.getElementById(chars_remaining).innerHTML = text;
		} else {
			text = len - maxchars;
			text = text + " characters over recommended maximum.";
			document.getElementById(chars_remaining).innerHTML = text;
		}
		if (enforce_limit == 1) {
                        for (var currentLength = document.getElementById(fieldname).value.length; currentLength = 0; currentLength--) {
                            if (encodeURIComponent(document.getElementById(fieldname).value).replace(/%../g, 'x').length <= maxchars) {
                                document.getElementById(fieldname).value = document.getElementById(fieldname).value.substring(0,currentLength);
                                break;
                            }
                        }
		}

}

/**
 * Useful functions to calculate the position of the overlay
 * contentId - overlay div id
 * returns - position of the div {left: left, top: top}
 */
function overlayPos(contentId) {
    var left = ((parseInt((getPageSize()[2]/2)-($(contentId).offsetWidth/2)))+getPageScroll()[0])<getPageScroll()[0]?getPageScroll()[0]:(parseInt((getPageSize()[2]/2)-($(contentId).offsetWidth/2)))+getPageScroll()[0];
    var top = (((parseInt((getPageSize()[3]/2)-($(contentId).offsetHeight/2)))+getPageScroll()[1])<getPageScroll()[1]?getPageScroll()[1]:(parseInt((getPageSize()[3]/2)-($(contentId).offsetHeight/2)))+getPageScroll()[1]);
    var pos = {left: left, top: top};
    return pos;
}
function getPageSize(){
    var xScroll,yScroll;

    if(window.innerHeight&&window.scrollMaxY){
	    xScroll=document.body.scrollWidth;
	    yScroll=window.innerHeight+window.scrollMaxY;
    }else if(document.body.scrollHeight>document.body.offsetHeight){
	    xScroll=document.body.scrollWidth;
	    yScroll=document.body.scrollHeight;
    }else{
	    xScroll=document.body.offsetWidth;
	    yScroll=document.body.offsetHeight;
    }
    var windowWidth,windowHeight;
    if(self.innerHeight){
	    windowWidth=self.innerWidth;
	    windowHeight=self.innerHeight;
    }else if(document.documentElement&&document.documentElement.clientHeight&&document.documentElement.clientHeight>0){
	    windowWidth=document.documentElement.clientWidth;
	    windowHeight=document.documentElement.clientHeight;
    }else if(document.body){
	    windowWidth=document.body.clientWidth;
	    windowHeight=document.body.clientHeight;
    }
    pageHeight=yScroll;
    pageWidth=xScroll;
    arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);
    return arrayPageSize;
}
function getPageScroll(){
     var yScroll;    var xScroll;

     if(self.pageYOffset){
	     yScroll=self.pageYOffset;
	     xScroll=self.pageXOffset;
     }else if(document.documentElement){
	     try{
		     if(document.documentElement.scrollTop){
			     yScroll=document.documentElement.scrollTop;
			     xScroll=document.documentElement.scrollLeft;
		     }else{
			     yScroll=document.body.scrollTop;
			     xScroll=document.body.scrollLeft;
		     }		
	     }catch(e){
		     yScroll=document.body.scrollTop;
		     xScroll=document.body.scrollLeft;
	     }
     }else if(document.body){
	     yScroll=document.body.scrollTop;
	     xScroll=document.body.scrollLeft;
     }
     arrayPageScroll=new Array(xScroll,yScroll);
     return arrayPageScroll;
}


