// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
 function toggleArrowGraphic(myElementId, level){
//    var menuName = myElementId + "_sub_menu"
//    var arrowGraphicEleName = "level_arrow_graphic_" + myElementId
//    var aMenu = document.getElementById(menuName)
//    var arrowGraphicEle = document.getElementById(arrowGraphicEleName)
//    var arrowClassString = "levelArrowDown"
//    if(aMenu != null){
//        if(aMenu.myWindowOpen == null){
//          arrowClassString="level" + level + "ArrowUp"
//        }else{
//            if(!aMenu.myWindowOpen){
//              arrowClassString="level" + level + "ArrowDown"
//            }else{
//              arrowClassString="level" + level + "ArrowUp"
//            }
//        }
//    }
//    if(arrowGraphicEle != null){
//        arrowGraphicEle.className=arrowClassString;
//    }
 }

function storeHelp(){
    var url = "/store/show_help"
    new Ajax.Request(url, {asynchronous:true, evalScripts:true}); return false
    return false
}

 function resetDimensions(){

 }

 function resetDimensions_backup(){
        var theHeight = 0
        if (window.innerHeight)
            theHeight=window.innerHeight
        else if (document.documentElement && document.documentElement.clientHeight)
             theHeight=document.documentElement.clientHeight
        else if (document.body)
             theHeight=document.body.clientHeight
        var newHeight = 0
        theHeight = (theHeight - 105) * 0.95
        document.height=newHeight + 'px'
        document.getElementById('work_area').style.height=newHeight +'px'
        document.getElementById('menu_bar').style.height=newHeight +'px'
 }

 function toggleMenuItemDrawer(item_id, level){
    var menu_item_id = item_id + '_sub_menu';
    var ele = document.getElementById(menu_item_id);
    if(ele.myWindowOpen == null){
        ele.myWindowOpen=false;
    }else{
        ele.myWindowOpen=!ele.myWindowOpen
    }
//    var the_menu = document.getElementById("menu_bar");
//    var real_width = the_menu.offsetWidth;
//    var effective_width = the_menu.clientWidth;
//    var width_dif = real_width - effective_width
  //  if(width_dif > 5){
  //      the_menu.style.width = "175px";
  //  }
  //  if(width_dif < 5){
  //      the_menu.style.width = "158px";
  //  }
 }
 
function addMouseHighlightingTo(elementId, buttonClassName){
  var eleName = elementId + "_button"
  var myEle = document.getElementById(eleName)
  myEle.onmouseover = function(){toggleElementClass(eleName, buttonClassName, 0)}
  myEle.onmouseout = function(){toggleElementClass(eleName, buttonClassName, 1)}
}

function toggleElementClass(elementId, className, overOutFlag){
  var myEle = document.getElementById(elementId)
  var overClassName = className + "h"
  var outClassName = className;
  if(myEle != null){
    if(overOutFlag == 0){
        myEle.className=overClassName
    }else{
        myEle.className=outClassName
    }
  }
}

function setCommandMode(chosenCommand, formName){
  var myForm = document.forms[0]
  if(myForm != null){
    new Ajax.Request(chosenCommand, {asynchronous:true, evalScripts:true, parameters:Form.serialize(myForm)}); return false
  }else{
    new Ajax.Request(chosenCommand, {asynchronous:true, evalScripts:true}); return false
  }
  return false
}

function cancelOrder(anId){
   new Ajax.Request("/store_management/cancel_order/" + anId, {asynchronous:true, evalScripts:true}); return false
  return false
}

function confirmOrder(anId){
   new Ajax.Request("/store_management/send_confirmation_for_order/" + anId, {asynchronous:true, evalScripts:true}); return false
  return false
}

function shipOrder(anId){
   new Ajax.Request("/store_management/send_ship_notification_for_order/" + anId, {asynchronous:true, evalScripts:true}); return false
  return false
}

function completeOrder(anId){
   new Ajax.Request("/store_management/send_complete_notification_for_order/" + anId, {asynchronous:true, evalScripts:true}); return false
  return false
}


function showSelectedColor(divName){
   new Ajax.Request("/store/show_selected_color/" + divName, {asynchronous:true, evalScripts:true}); return false
  return false
}

function appInit(){
  initialize()  
  Effect.Fade('busy',{duration:0.5,queue:'end'})
}

function appUnload(){
    GUnload()
}

function toggleIconHighlightWithStatus(control, highlight, inline, statusString){
    var myClassName = "table_detail_icon"
	if(inline){
		myClassName = "inline_" + myClassName
	}
	if(highlight){
		myClassName = myClassName + "_highlight"
	}
    control.className = myClassName
    updateStatus(statusString)
    return true
}

function updateStatus(statusString){
   // window.status=statusString
    document.getElementById("breadcrumb_trail").innerHTML=statusString
}

function submitenter(myfield, e, the_command, the_form) {
    var keycode

    if (window.event){
        keycode = window.event.keyCode
    }else if (e){
        keycode = e.which
    }else{
        return true
    }
    if (keycode == 13) {
	setCommandMode(the_command, the_form)
        return true
    }else{
        return true
    }
}

function removeAllItems(controlDivId){
	var source = document.getElementById(controlDivId+"_asc_right_list")
	var target = document.getElementById(controlDivId+"_asc_left_list")
	moveItems(source, target, true)
}
function removeSelectedItems(controlDivId){
	var source = document.getElementById(controlDivId+"_asc_right_list")
	var target = document.getElementById(controlDivId+"_asc_left_list")
	moveItems(source, target, false)
}
function addSelectedItems(controlDivId){
	var source = document.getElementById(controlDivId+"_asc_left_list")
	var target = document.getElementById(controlDivId+"_asc_right_list")
	moveItems(source, target, false)
}

function addAllItems(controlDivId){
	var source = document.getElementById(controlDivId+"_asc_left_list")
	var target = document.getElementById(controlDivId+"_asc_right_list")
	moveItems(source, target, true)
}

function moveItems(source, target, all){
	var inputs = source.getElementsByTagName("input")
	var toMove = new Array()
	var i
	var item
	for(i=0; i < inputs.length; i++){
		item = inputs[i]
	    if (item.type == "checkbox") { 
			if(all || item.checked){
				toMove.push(item.parentNode)
			}
		}
	}
	if(toMove.length > 0){
		for(i=0; i < toMove.length; i++){
			source.removeChild(toMove[i])
			target.appendChild(toMove[i])
			toMove[i].firstChild.checked=false
			toggleId(toMove[i].firstChild)
		}
	}
	
	reStyleChildrenOf(source, -1)
	reStyleChildrenOf(target, 1)
}

function reStyleChildrenOf(aWidget, startingWith){
	var theChildren = aWidget.childNodes
	var child = null
	var flag = startingWith
	for(var i=0; i < theChildren.length; i++){
		child = theChildren[i]
		if(flag < 0) {
			child.className="data_row_even"
		}else{
			child.className="data_row_odd"
		}
		flag = flag * (-1)
	}
		
}

function saveUserInfo(doTheSave){
	if(doTheSave){
		var myForm = document.forms[0]
		if(myForm != null){
		new Ajax.Request("/account/save_user", {asynchronous:true, evalScripts:true, parameters:Form.serialize(myForm)}); return false
		}
	}else{
		new Ajax.Request("/account/cancel_save_user", {asynchronous:true, evalScripts:true}); return false		
	}
	return false
			
}

function clearCart(){
        var result
        result = confirm("Are you sure you want to clear the cart?")
	if(result){
        	new Ajax.Request("/store/clear_cart", {asynchronous:true, evalScripts:true}); return false
	}
	return false
}

function viewCart(){
        new Ajax.Request("/store/view_cart", {asynchronous:true, evalScripts:true}); return false
	return false
}

function addToCart(anId){
        var url = "/store/add_to_cart/" + anId
	new Ajax.Request(url, {asynchronous:true, evalScripts:true}); return false
	return false
}

function toggleId(anElement){
	var anId = anElement.id.split("_")
	var newId = "_" + anId[1]
	if(anId[0][0] == "a"){
		newId = "selected" + newId
	}else{
		newId = "available" + newId
	}
	anElement.id = newId

	var aName = anElement.name.split("[")
	var lastPart = aName[1].split("]")
	var newName = "[" + lastPart[0] + "]"
	if(aName[0][0] == "a"){
		newName = "selected" + newName
	}else{
		newName = "available" + newName
	}
	anElement.name = newName
	anElement.nextSibling.name = newName
	
}

// map handling stuff

var MapIconMaker={};
MapIconMaker.createMarkerIcon=function(a){var b=a.width||32;var c=a.height||32;var d=a.primaryColor||"#ff0000";var e=a.strokeColor||"#000000";var f=a.cornerColor||"#ffffff";var g="http://chart.apis.google.com/chart?cht=mm";var h=g+"&chs="+b+"x"+c+"&chco="+f.replace("#","")+","+d.replace("#","")+","+e.replace("#","")+"&ext=.png";var j=new GIcon(G_DEFAULT_ICON);j.image=h;j.iconSize=new GSize(b,c);j.shadowSize=new GSize(Math.floor(b*1.6),c);j.iconAnchor=new GPoint(b/2,c);j.infoWindowAnchor=new GPoint(b/2,Math.floor(c/12));j.printImage=h+"&chof=gif";j.mozPrintImage=h+"&chf=bg,s,ECECD8"+"&chof=gif";var h=g+"&chs="+b+"x"+c+"&chco="+f.replace("#","")+","+d.replace("#","")+","+e.replace("#","");j.transparent=h+"&chf=a,s,ffffff11&ext=.png";j.imageMap=[b/2,c,(7/16)*b,(5/8)*c,(5/16)*b,(7/16)*c,(7/32)*b,(5/16)*c,(5/16)*b,(1/8)*c,(1/2)*b,0,(11/16)*b,(1/8)*c,(25/32)*b,(5/16)*c,(11/16)*b,(7/16)*c,(9/16)*b,(5/8)*c];for(var i=0;i<j.imageMap.length;i++){j.imageMap[i]=parseInt(j.imageMap[i])}return j}


function getMap(){
      element = document.getElementById("map_div");
      var map = null;
          if(element){
              map = new GMap2(element);
              map.setCenter(new GLatLng(45.5,-72.56), 13);
              map.addControl(new GSmallMapControl());
              map.addControl(new GMapTypeControl());
          }
    return map;
}

function makeIcon(){
 var iconOptions = {};
  iconOptions.width = 32;
  iconOptions.height = 32;
  iconOptions.primaryColor = "#FF0000FF";
  iconOptions.cornerColor = "#FFC800FF";
  iconOptions.strokeColor = "#930D0DFF";
  return MapIconMaker.createMarkerIcon(iconOptions);
}

function createMarker(point, theMessage) {
    // Create a lettered icon for this point using our icon class
    var letter = String.fromCharCode("A".charCodeAt(0) + index);
    var letteredIcon = new GIcon(baseIcon);
    letteredIcon.image = "http://www.google.com/mapfiles/markerA.png";

    // Set up our GMarkerOptions object
    markerOptions = { icon:letteredIcon };
    var marker = new GMarker(point, markerOptions);

    GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml(theMessage);
    });
    return marker;
}

// A function to create a tabbed marker and set up the event window
// This version accepts a variable number of tabs, passed in the arrays htmls[] and labels[]
function createTabbedMarker(point,htmls,labels) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
    // adjust the width so that the info window is large enough for this many tabs
    if (htmls.length > 2) {
      htmls[0] = '<div style="width:'+htmls.length*88+'px">' + htmls[0] + '</div>';
    }
    var tabs = [];
    for (var i=0; i<htmls.length; i++) {
      tabs.push(new GInfoWindowTab(labels[i],htmls[i]));
    }
    marker.openInfoWindowTabsHtml(tabs);
  });
  return marker;
}

function logHit(hitPage){
  _gat._getTracker("UA-5290014-1")._trackPageview(hitPage)
}


































	
// Browser detect stuff from http://www.quirksmode.org/js/detect.html


//var BrowserDetect = {
//	init: function () {
//		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
//		this.version = this.searchVersion(navigator.userAgent)
//			|| this.searchVersion(navigator.appVersion)
//			|| "an unknown version";
//		this.OS = this.searchString(this.dataOS) || "an unknown OS";
//	},
//	searchString: function (data) {
//		for (var i=0;i<data.length;i++)	{
//			var dataString = data[i].string;
//			var dataProp = data[i].prop;
//			this.versionSearchString = data[i].versionSearch || data[i].identity;
//			if (dataString) {
//				if (dataString.indexOf(data[i].subString) != -1)
//					return data[i].identity;
//			}
//			else if (dataProp)
//				return data[i].identity;
//		}
//	},
//	searchVersion: function (dataString) {
//		var index = dataString.indexOf(this.versionSearchString);
//		if (index == -1) return;
//		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
//	},
//	dataBrowser: [
//		{ 	string: navigator.userAgent,
//			subString: "OmniWeb",
//			versionSearch: "OmniWeb/",
//			identity: "OmniWeb"
//		},
//		{
//			string: navigator.vendor,
//			subString: "Apple",
//			identity: "Safari"
//		},
//		{
//			prop: window.opera,
//			identity: "Opera"
//		},
//		{
//			string: navigator.vendor,
//			subString: "iCab",
//			identity: "iCab"
//		},
//		{
//			string: navigator.vendor,
//			subString: "KDE",
//			identity: "Konqueror"
//		},
//		{
//			string: navigator.userAgent,
//			subString: "Firefox",
//			identity: "Firefox"
//		},
//		{
//			string: navigator.vendor,
//			subString: "Camino",
//			identity: "Camino"
//		},
//		{		// for newer Netscapes (6+)
//			string: navigator.userAgent,
//			subString: "Netscape",
//			identity: "Netscape"
//		},
//		{
//			string: navigator.userAgent,
//			subString: "MSIE",
//			identity: "Explorer",
//			versionSearch: "MSIE"
//		},
//		{
//			string: navigator.userAgent,
//			subString: "Gecko",
//			identity: "Mozilla",
//			versionSearch: "rv"
//		},
//		{ 		// for older Netscapes (4-)
//			string: navigator.userAgent,
//			subString: "Mozilla",
//			identity: "Netscape",
//			versionSearch: "Mozilla"
//		}
//	],
//	dataOS : [
//		{
//			string: navigator.platform,
//			subString: "Win",
//			identity: "Windows"
//		},
//		{
//			string: navigator.platform,
//			subString: "Mac",
//			identity: "Mac"
//		},
//		{
//			string: navigator.platform,
//			subString: "Linux",
//			identity: "Linux"
//		}
//	]
//
//};
//BrowserDetect.init();

    function catchEnterKey(e, control_name) {
       if (!e) {
           e = window.event;
       }
       if (e.keyCode == 13) {
           document.getElementById(control_name).focus();
       }
   }

	
Ajax.Responders.register({
  onCreate: function() {
    if($('busy') && Ajax.activeRequestCount>0)
      Effect.Appear('busy',{duration:0.5,queue:'end'})
  },
  onComplete: function() {
    if($('busy') && Ajax.activeRequestCount==0)
      Effect.Fade('busy',{duration:0.5,queue:'end'})
  }
})

