﻿function popupWin(url, width, height, b_has_top_bars)
{
	var bar_str = b_has_top_bars ? "yes" : "no";
	var curr_time = new Date();
	w_popup=window.open(url, "UltimateTruck" + curr_time.getHours() + curr_time.getMinutes() + curr_time.getSeconds(),
			"width="+width+",height="+height+",scrollbars,resizable,menubar=" + bar_str + ",toolbar=" + bar_str);
	w_popup.focus();
	return w_popup;
}

function checkEmailFormat(email)
{
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(email);
}

function AjaxObject() 
{
	this.sendRequest = function (url, callbackObj)
	{
		var xmlHttpReq = false;
		try {
			// try legacy object first
			xmlHttpReq = new AcitveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				// try IE implementation now
				xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				xmlHttpReq = false;
			}
		}

		if (!xmlHttpReq) {
			// Mozilla-based browser
			xmlHttpReq = new XMLHttpRequest();
			if (!xmlHttpReq) {
				displayError("AJAX: cannot create instance - check the browser");
			}
		}

		xmlHttpReq.open('GET', url, true);
		xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlHttpReq.onreadystatechange = function() {
			_callbackResponse(xmlHttpReq, callbackObj);
		};
    
		xmlHttpReq.send(null);
	}

	_callbackResponse = function (httpReq, functionObj) {
		if (httpReq && httpReq.readyState == 4) {
			if (httpReq.status == 200) {
				functionObj(httpReq.responseText);
			} else if (httpReq.status == 401) {
				httpReq.responseText = "";
				functionObj(httpReq.responseText);
			}
		}
	}
}

var g_currentEditBox;
var g_projectRoot;

function ajaxSetDataCallback(responseText)
{
	if (responseText)
	{
        if (responseText == "SERVER-SESSION-TIMEOUT")
        {
            alert("Your session has timed out. Please re-login.");
            window.location.href = g_SiteDefaultPage;
	    }
        else
		    alert(responseText);
	}
	else
	{
		if (g_currentEditBox) g_currentEditBox.style.backgroundColor = '#FFFFFF';
	}
}

function ajaxSetData(l, t, c, w, box, additionalCallback)
{
	g_currentEditBox = box;
	var v = "";
	if (box)
	{
	    box.style.backgroundColor = '#FF0000';
	    v = escape(box.value);
    }
    
	var ajaxConnObj = new AjaxObject;
	var url = g_projectRoot + "/radio/set_data.aspx?l=" + l + "&t=" + t + "&c=" + c + "&w=" + escape(w) +
	    "&v=" + v + "&anticache=" + Math.random();
	ajaxConnObj.sendRequest(url, function (responseText) {
	        ajaxSetDataCallback(responseText);
	        if (additionalCallback) additionalCallback.call();
	    });
}

function boxOnFocus(box)
{
	box.style.border='solid 1px blue';
	box.style.backgroundColor='#C4E1FF';
}

function boxOnBlur(box)
{
	box.style.border='solid 1px #7F9DB9';
	if (box.style.backgroundColor != '#ff0000')
		box.style.backgroundColor = '#ffffff';
}

function linkLang(langBox, url)
{
	var lang = langBox.value;
	langBox.selectedIndex = 0;
	
	if (lang == "")
	{
		return;
	}
	else if (lang == "en")
	{
		window.location.href = url;
	}
	else if (confirm("You will be redirected to a page translated by Google. The translation may or may not accurately represent the content of Mushroom Networks official website.\r\n\r\nTo place an order, you must come back to http://www.mushroomnetworks.com\r\n\r\nDo you want to continue?"))
	{
		window.location.href = "http://209.85.171.104/translate_c?hl=en&sl=en&tl=" + lang + "&u=" + escape(url) + "&usg=ALkJrhhYyKbBI4O6IKBUfno8k-QoXfhPHw";
	}
}

////////////////////////////////////// DialogSupport ////////////////////////////////////////////

//content should be either a string or a <div> element. if div, it must be the only child in its parent
function DialogSupport(isShow, title, content, ow, oh, leftTopObj)
{   
	//// Member functions

    this.DialogShow = function(title, content, ow, oh, leftTopObj)
    {  
        ScreenObscure();      

        var objDialog = document.getElementById("DialogMove");    
        if (!objDialog)
        {
			objDialog = document.createElement("div");
			objDialog.id = "DialogMove";    
			document.forms[0].appendChild(objDialog);
		}

		objDialog.innerHTML =
			"<table cellpadding=\"2\" cellspacing=\"0\" class=\"popit_content\" width=\"100%\">" + 
			"	<tr><td id=\"g_popupbox_title_td\" class=\"popit_header\" >" + title + "</td>" +
			"		<td width=\"5%\" align=\"right\" class=\"popit_header\" >" + 
			"			<a href=\"#\" class=\"op_link\" onclick=\"DialogSupport(false); return false;\">[&nbsp;x&nbsp;]</a>" + 
			"		</td>" + 
			"	</tr><tr><td colspan=2 id=\"g_popupbox_content_td\" style=\"padding:10px\"></td></tr>" + 
			"</table>";

		var dialogcontent = document.getElementById("g_popupbox_content_td");
        if (typeof(content) == "string")
        {
			this.OldParent = null;
			dialogcontent.innerHTML=content;
		}
		else	//must be object - <div>
		{
			this.OldParent = content.parentNode;
			this.DialogContent = content;
			dialogcontent.appendChild(content);
		}
        
        dragObject = objDialog;

		//calculate the position
		var dde = document.documentElement;    
		if (window.innerWidth)
		{    
			var ww = window.innerWidth;    
			var wh = window.innerHeight;    
			var bgX = window.pageXOffset;    
			var bgY = window.pageYOffset;    
		}
		else
		{    
			var ww = dde.offsetWidth;    
			var wh = dde.offsetHeight;    
			var bgX = dde.scrollLeft;    
			var bgY = dde.scrollTop;    
		}   
		
		var diglogX, diglogY;
		if (leftTopObj)
		{
			//must be an html object
			var pos = getPosition(leftTopObj);
			var rightMargin = (document.body.scrollLeft + document.documentElement.offsetWidth) - (pos.x + ow);
			var bottomMargin = (document.body.scrollTop + document.documentElement.offsetHeight) - (pos.y + oh);
			if (rightMargin < 0) pos.x += rightMargin - 10;			//10 is to avoid scrollbar
			if (bottomMargin < 0) pos.y += bottomMargin - 10;
			diglogX = pos.x;    
			diglogY = pos.y;   
		}
		else
		{
			diglogX = (bgX + ((ww - ow)/2));    
			diglogY = (bgY + ((wh - oh)/2));    
		}

		var oS = objDialog.style;    
		oS.display = "block";    
		oS.left = diglogX + "px";    
		oS.top = diglogY + "px";    
		oS.width = ow + "px";    
		oS.position = "absolute";    
		oS.zIndex = "5";    
		
		addEvent(document.getElementById('g_popupbox_title_td'), 'mousedown', mouseDown);
		addEvent(document,'mousemove', mouseMove);
		addEvent(document,'mouseup', mouseUp);
		addEvent(window, 'resize', resizeWin);
		getPageSize();
    }    
   
    this.DialogHide = function()
    {    
		ScreenRestore();  

		//restore content's old location in document
		if (this.OldParent != null)
		{
			this.OldParent.appendChild(this.DialogContent);
			this.OldParent = null;
		}
		  
		var objDialog = document.getElementById("DialogMove");    
		if (objDialog)    
		{
			objDialog.innerHTML = "";
			objDialog.style.display = "none";
		}
		
		removeEvent(document,'mousemove', mouseMove);
		removeEvent(document,'mouseup', mouseUp);
		removeEvent(window, 'resize', resizeWin);
	}    
   
    var ScreenObscure = function()
    {
		var objScreen = document.getElementById("ScreenOver");    
		if(!objScreen)   
		{
			objScreen = document.createElement("div");
			var oS = objScreen.style;
			objScreen.id = "ScreenOver";
			oS.display = "block";
			oS.top = oS.left = oS.margin = oS.padding = "0px";
			oS.position = "absolute";
			oS.zIndex = "3";
			oS.background = "#444444";
			oS.filter = "alpha(opacity=70)";
			oS.opacity = 70/100;
			oS.MozOpacity = 70/100;
			document.body.appendChild(objScreen);
		}
		else
		{
			objScreen.style.display = 'block';
		}
		resizeWin(); 

		var allselect = document.getElementsByTagName("select");    
		for (var i=0; i<allselect.length; i++)    
		{
			if (allselect[i].id != "dropdown_id_you_dont_want_to_hide")
				allselect[i].style.visibility = "hidden";
		}
    }    
   
    var ScreenRestore = function()
    {
		SwitchHtmlDisplay("ScreenOver", "hide");

		var allselect = document.getElementsByTagName("select");    
		for (var i=0; i<allselect.length; i++)     
			allselect[i].style.visibility = "visible";    
    }
    
    var resizeWin = function()
    {
		var oS = document.getElementById("ScreenOver").style;
		var pageSize = getPageSize();

		var pageSize = getPageSize();
//		oS.width = (document.body.scrollWidth + 10) + "px";
//		oS.height = (document.body.scrollHeight + 10) + "px";
		oS.width = (pageSize.pageWidth + 10)+ "px";
		oS.height = (pageSize.pageHeight + 10) + "px";		
		
    }

    /// Drag and Drop part
    var relatedPosX, relatedPosY;
    var dragObject = null;
    var candrag = false;

	var mouseDown = function()
    {
        candrag = true;
    }
    
    var mouseUp = function()
    {
        candrag = false;
    }
    
    var mouseMove = function(ev)
    {
        ev = ev || window.event;
        var mousePos = mouseCoords(ev);
        if(candrag)
        {
            if(relatedPosX && relatedPosY)
            {
                dragObject.style.left= (mousePos.x - relatedPosX) + "px";
                dragObject.style.top = (mousePos.y - relatedPosY) + "px";
            }
            else
            {   
                var pos = getPosition(dragObject);
                relatedPosX = mousePos.x-pos.x;
                relatedPosY = mousePos.y-pos.y;
            }

            return false;
        }
        else
        {
            relatedPosX = null;
            relatedPosY = null;
        }
    }
    
    var mouseCoords = function(ev)
    {
	    if(ev.pageX || ev.pageY)
		    return {x:ev.pageX, y:ev.pageY};
	    else
			return {
				x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
				y:ev.clientY + document.body.scrollTop  - document.body.clientTop
			};
    }

	//// Member functions

    if(isShow)
		this.DialogShow(title, content, ow, oh, leftTopObj);
    else
        this.DialogHide();

}    

function getPosition(e)
{
    var left = 0;
    var top  = 0;

    while (e.offsetParent)
    {
	    left += e.offsetLeft;
	    top  += e.offsetTop;
	    e = e.offsetParent;
    }

    left += e.offsetLeft;
    top += e.offsetTop;

    return {x:left, y:top};
}

// getPageSize()
// Returns array with page width, height 
//
function getPageSize(){
 
    var xScroll, yScroll;
    
    if (window.innerHeight && window.scrollMaxY) { 
        yScroll = window.innerHeight + window.scrollMaxY;
        xScroll = window.innerWidth + window.scrollMaxX;
    } 
    else 
    { 
        yScroll = (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;
        xScroll = (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth;
    }
    
    var windowWidth, windowHeight;
    if (self.innerHeight) { // all except Explorer
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    } 
 
    // for small pages with total height less then height of the viewport
    if(yScroll < windowHeight){
        pageHeight = windowHeight;
    } else { 
        pageHeight = yScroll;
    } 
    // for small pages with total width less then width of the viewport
    if(xScroll < windowWidth){ 
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }

    return {pageWidth:pageWidth, pageHeight:pageHeight, windowWidth:windowWidth, windowHeight:windowHeight}
}

function addEvent(obj, evType, fn, useCapture)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.attachEvent)
	{
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
	else
	{
		alert("Handler could not be attached");
	}
} 

function removeEvent(obj, evType, fn, useCapture)
{
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
} 

function SwitchHtmlDisplay(id, mode)
{
	var elm = document.getElementById(id);
	if (elm == null) return;
    var style = elm.style;
	if (mode != null) mode = mode.toLowerCase();
	
	if (mode == 'show')
		style.display = '';
	else if (mode == 'hide')
		style.display = 'none';
    else
    {
		if(style.display != 'none')
			style.display = 'none';
		else
			style.display = '';
	}
}

var g_SiteDefaultPage;
function UpdateHandler(responseText)
{
    if (responseText == "SERVER-SESSION-TIMEOUT")
    {
        alert("Your session has timed out. Please re-login.");
        window.location.href = g_SiteDefaultPage;
        return;
    }
    else
    {
	    column.style.backgroundColor = '#FFFFFF';
	}
}

function SelectAddressBlock(prefix)
{
    prefix = prefix || '';
    var isUS = (document.getElementById(prefix + "country_sel").value == "US");
    document.getElementById(prefix + "us_address_tbl").style.display = (isUS ? "block" : "none");
    document.getElementById(prefix + "non_us_address_tbl").style.display = (isUS ? "none" : "block");
}

function RequireAddressBlock()
{
    var field = null;
    var isUS = (document.getElementById("country_sel").value == "US");
    if (document.getElementById("contact_person").value == "")
        field = "Contact Person";
    else if (isUS)
    {
        if (document.getElementById("addr_line1").value == "")
            field = "Address 1";
        else if (document.getElementById("city_name").value == "")
            field = "City";
        else if (document.getElementById("state_code").value == "")
            field = "State";
        else if (document.getElementById("zip_code").value == "")
            field = "Zip";
    }
    else
    {
        if (document.getElementById("non_us_address").value == "")
            field = "Address";
    }
    
    if (field != null)
    {
        alert(field + " is required.");
        return false;
    }
    else
        return true;
}
