﻿/**
 * POPUP WINDOW CODE v1.1
 * Used for displaying DHTML only popups instead of using buggy modal windows.
 *
 * By Seth Banks (webmaster at subimage dot com)
 * http://www.subimage.com/
 *
 * Contributions by Eric Angel (tab index code) and Scott (hiding/showing selects for IE users)
 *
 * Up to date code can be found at http://www.subimage.com/dhtml/subModal
 *
 * This code is free for you to use anywhere, just keep this comment block.
 */

// Popup code
var gPopupMask = null;
var gPopupContainer = null;
var gPopFrame = null;
var gReturnFunc;
var gPopupIsShown = false;

var gHideSelects = false;


var gTabIndexes = new Array();
// Pre-defined list of tags we want to disable/enable tabbing into
var gTabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME");	

// If using Mozilla or Firefox, use Tab-key trap.
if (!document.all) {
	document.onkeypress = keyDownHandler;
}

/**
 * Initializes popup code on load.	
 */
function initPopUp() {
    gPopupMask = document.getElementById("popupMask");
	gPopupContainer = document.getElementById("popupContainer");
	gPopFrame = document.getElementById("popupFrame");	
	// check to see if this is IE version 6 or lower. hide select boxes if so
	// maybe they'll fix this in version 7?
	var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
	if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE") > -1) {
		gHideSelects = true;
	}
}
addEvent(window, "load", initPopUp);


 /**
	* @argument width - int in pixels
	* @argument height - int in pixels
	* @argument url - url to display
	* @argument returnFunc - function to call when returning true from the window.
	*/

function showPopWin(url, width, height, returnFunc) {
   // initPopUp();
	gPopupIsShown = true;
	disableTabIndexes();
	gPopupMask.style.display = "block";
	gPopupContainer.style.display = "block";
	// calculate where to place the window on screen
	centerPopWin(width, height);
	
	var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
	
	gPopupContainer.style.width = width + "px";
	gPopupContainer.style.height = (height+titleBarHeight) + "px";
	// need to set the width of the iframe to the title bar width because of the dropshadow
	// some oddness was occuring and causing the frame to poke outside the border in IE6
	gPopFrame.style.width = parseInt(document.getElementById("popupTitleBar").offsetWidth, 10) + "px";
	gPopFrame.style.height = (height) + "px";
	
	// set the url
	if(url!="")	gPopFrame.src = url;
	
	gReturnFunc = returnFunc;
	// for IE
	if (gHideSelects == true) {
		hideSelectBoxes();
	}
	if(url!="")	window.setTimeout("setPopTitle();", 600);
}

//
var gi = 0;
function centerPopWin(width, height) { 
	if (gPopupIsShown == true) {
		if (width == null || isNaN(width)) {
			width = gPopupContainer.offsetWidth;
		}
		if (height == null) {
			height = gPopupContainer.offsetHeight;
		}
		var header = document.getElementById("ctl00_nav");
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();
		
		var theBody = document.documentElement;
		var scTop = parseInt(theBody.scrollTop,10);
		var scLeft = parseInt(theBody.scrollLeft,10);
		
		gPopupMask.style.height = fullHeight + "px";
		gPopupMask.style.width = fullWidth + "px";

		gPopupMask.style.top = scTop + "px";
		gPopupMask.style.left = scLeft + "px";
		
		window.status = gPopupMask.style.top + " " + gPopupMask.style.left + " " + gi++;
		
		var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
		gPopupContainer.style.top = (scTop + ((fullHeight - (height+titleBarHeight)) / 2)) + "px";
		gPopupContainer.style.left =  (scLeft + ((fullWidth - width) / 2)) + "px";
		//alert(fullWidth + " " + width + " " + gPopupContainer.style.left);
	}
    else if(false)
    {
        var header = document.getElementById("ctl00_nav");
		var theBody = document.documentElement;
		
		var scTop = parseInt(theBody.scrollTop,10);
		var scLeft = parseInt(theBody.scrollLeft,10);
		if(header!=null) 
		{
		    if(header.style.position!= "absolute")
		    {
		        header.style.position = "absolute";
	        }
	        if(scTop>45)
	            header.style.top = scTop;
	        else
	        {
	            header.style.top = 45;
	        }
		}

    }
}
addEvent(window, "resize", centerPopWin);
//addEvent(window, "scroll", centerPopWin);
window.onscroll = centerPopWin;


function hideAndScroll(toScroll)
{
    hidePopWin();
    if(toScroll)
    setTimeout("scrollToBottom()",100);
}

function scrollToBottom()
{
window.scroll(0,document.documentElement.offsetHeight);
}
/**
 * @argument callReturnFunc - bool - determines if we call the return function specified
 * @argument returnVal - anything - return value 
 */

function hidePopWin(callReturnFunc) {
	gPopupIsShown = false;
	restoreTabIndexes();
	if (gPopupMask == null) {
		return;
	}
	gPopupMask.style.display = "none";
	gPopupContainer.style.display = "none";
	if (callReturnFunc == true && gReturnFunc != null) {
		gReturnFunc(window.frames["popupFrame"].returnVal);
	}
	gPopFrame.src = 'loading.html';
	// display all select boxes
	if (gHideSelects == true) {
		displaySelectBoxes();
	}
}

/**
 * Sets the popup title based on the title of the html document it contains.
 * Uses a timeout to keep checking until the title is valid.
 */
function setPopTitle() {
	if (window.frames["popupFrame"].document.title == null) {
		window.setTimeout("setPopTitle();", 10);
	} else {
		document.getElementById("popupTitle").innerHTML = window.frames["popupFrame"].document.title;
	}
}

// Tab key trap. iff popup is shown and key was [TAB], suppress it.
// @argument e - event - keyboard event that caused this function to be called.
function keyDownHandler(e) {
    if (gPopupIsShown && e.keyCode == 9)  return false;
}

// For IE.  Go through predefined tags and disable tabbing into them.
function disableTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				gTabIndexes[i] = tagElements[k].tabIndex;
				tagElements[k].tabIndex="-1";
				i++;
			}
		}
	}
}

// For IE. Restore tab-indexes.
function restoreTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				tagElements[k].tabIndex = gTabIndexes[i];
				tagElements[k].tabEnabled = true;
				i++;
			}
		}
	}
}


/**
* Hides all drop down form select boxes on the screen so they do not appear above the mask layer.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*
* Thanks for the code Scott!
*/
function hideSelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
                var elename = document.forms[i].elements[e].name;
                if (!elename.indexOf("popEnquiry")>0)
				document.forms[i].elements[e].style.visibility="hidden";
			}
		}
	}
}

/**
* Makes all drop down form select boxes on the screen visible so they do not reappear after the dialog is closed.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*/
function displaySelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
			document.forms[i].elements[e].style.visibility="visible";
			}
		}
	}
}

function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}
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");
  }
}

/**
 * Code below taken from - http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/
 *
 * Modified 4/22/04 to work with Opera/Moz (by webmaster at subimage dot com)
 *
 * Gets the full width/height because it's different for most browsers.
 */
function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}
function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}

function EditContent(source,contentname){ 
    var arg =  'editcontent';
    if(source!="") arg+='*' + source;
    if(contentname!="") arg+='*' + contentname;
     __doPostBack('ctl00_buttonEditContent', arg);
}  

function savecontent()
{
    var arg =  'savecontent';
    __doPostBack('ctl00_buttonEditContent', arg);   
}

function ShowPage(pageName)
{
    var arg =  'showpage';
    if(pageName!="") arg+='*' + pageName;
     __doPostBack('ctl00_buttonEditContent', arg);
}

function tellAFriend()
{
    var arg =  'tellafriend';
     __doPostBack('ctl00_buttonEditContent', arg);
}

function talkToUs()
{
    var arg =  'talktous';
     __doPostBack('ctl00_buttonEditContent', arg);
}

function logOut()
{
    var arg =  'logout';
     __doPostBack('ctl00_buttonEditContent', arg);
}

function writeReview(productid,rvid)
{
    var arg = "review*writereview*Write Review"+ "*" + productid + "*" + rvid+"*0*0" ;
     __doPostBack('ctl00_buttonEditContent', arg);
    
}

function writeComment(productid,rvid)
{
    var arg = "review*replytopic*Write a comment"+ "*" + productid + "*" + rvid+"*0*0" ;
     __doPostBack('ctl00_buttonEditContent', arg);
    
}

function reportReview(productid,rvid)
{
    var arg = "review*reportreview*Report this review"+ "*" + productid + "*" + rvid+"*0*0" ;
     __doPostBack('ctl00_buttonEditContent', arg);
}

function replyToComment(tpid, poid, productid, rvid)
{
    var arg = "review*replycomment*Reply to this comment"+ "*" + productid + "*" + rvid +"*" + tpid + "*" + poid;
     __doPostBack('ctl00_buttonEditContent', arg);
}

function reportThisPost(tpid, poid, productid, rvid)
{
    var arg = "review*reportcomment*Report this comment"+ "*" + productid + "*" + rvid +"*" + tpid + "*" + poid;
     __doPostBack('ctl00_buttonEditContent', arg);
}


function reviewAction(act , tpid, poid, productid, rvid)
{
    var souper = getValue("hiddenSouper");
    var hiddenUNID = getValue("hiddenUNID");
    var yourName = getValue("popYourName");
    var yourEmail = getValue("popYourEmail");
    var yourMessage = getValue("popYourMessage");
    
    Word.Of.Mouth.theSoupServices.reviewAction(act, souper, hiddenUNID, yourName,yourEmail, yourMessage, tpid, poid, productid, rvid, reviewActionCallBack);
}

function reviewActionCallBack(results)
{
    hidePopWin();
}


function setSelected(iname, ivalue) {
    var obj = document.getElementById(iname)
    if (obj != null) {
        if (obj.options.length > 0) obj.options[0].selected = true;
        for (var i = 0; i < obj.options.length; i++) {
            if (obj.options[i].value == ivalue) {
                obj.options[i].selected = true;
            }
            else
                obj.options[i].selected = false;
        }
    }

}

function setCheckbox(iname, ivalue) {
    /**/
    var obj = document.getElementsByName(iname)
    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].value == ivalue)
                obj[i].checked = true;
            else
                obj[i].checked = false;
        }
    }
    /**/
}

function setRadio(iname, ivalue) {
    /**/
    var obj = document.getElementsByName(iname)
    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            ivalue = "" + ivalue;
            if (obj[i].value == ivalue) obj[i].checked = true;
            else obj[i].checked = false;
        }
    }
    /**/
}
function setText(iname, ivalue) {
    if (FCKeditorAPI.GetInstance(iname).Status == 2) FCKeditorAPI.GetInstance(iname).SetHTML(ivalue);
    else {
        setTimeout("setText('" + iname + "','" + ivalue + "')", 100);
    }
}

function addText(iname, ivalue) {
    if (FCKeditorAPI.GetInstance(iname).Status == 2) FCKeditorAPI.GetInstance(iname).InsertHtml(ivalue);
    else {
        setTimeout("addText('" + iname + "','" + ivalue + "')", 100);
    }
}
function getText(iname) {
    return FCKeditorAPI.GetInstance(iname).GetHTML();
}
function getSelectText(iname) {
    var obj = document.getElementById(iname)
    var ret = "";
    if (obj.selectedIndex > -1) ret = obj.options[obj.selectedIndex].text;
    return ret;
}
function getCheckboxText(iname) {
    var obj = document.getElementsByName(iname)
    var retStr = "";
    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                if (retStr != "") retStr += ",";
                retStr += obj[i].text;
            }
        }
    }
    return retStr;
}

function getRadioText(iname) {
    var obj = document.getElementsByName(iname)
    var retStr = "";
    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                retStr = obj[i].text;
            }
        }
    }
    return retStr;
}
function getTextValue(iname) {
    var obj = document.getElementById(iname)
    var ret = ""
    if (obj != null) {
        switch (obj.type) {
            case 'checkbox':
                ret = getCheckboxText(iname);
                break;
            case 'radio':
                ret = getRadioText(iname);
                break;
            case 'select-one':
                ret = getSelectText(iname);
                break;
            case 'textarea':
                ret = obj.value;
                break;
            default:
                ret = obj.value;
        }

    }
    return ret;
}
function getSelect(iname) {
    var obj = document.getElementById(iname)
    var ret = "";
    if (obj.selectedIndex > -1) ret = obj.options[obj.selectedIndex].value;
    return ret;
}
function getCheckbox(iname) {
    var obj = document.getElementsByName(iname)
    var retStr = "";
    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                if (retStr != "") retStr += ",";
                retStr += obj[i].value;
            }
        }
    }
    return retStr;
}

function getRadio(iname) {
    var obj = document.getElementsByName(iname)
    var retStr = "";

    if (obj != null) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                retStr = obj[i].value;
            }
        }
    }
    return retStr;
}

function getBValue(iname) {
    var ret = getValue(iname);
    if (ret == "true") return true;
    else return false;
}

function getIValue(iname) {
    var ret = getValue(iname);
    if (ret == "" || isNaN(ret)) ret = "0";
    return ret;
}
function getValue(iname) {
    /**/
    var obj = document.getElementById(iname);
    var ret = "";
    if (obj != null) {
        switch (obj.type) {

            case 'checkbox':
                ret = getCheckbox(iname);
                break;
            case 'radio':
                ret = getRadio(iname);
                break;
            case 'select-one':
                ret = getSelect(iname);
                break;
            case 'textarea':
                ret = obj.value;
                break;
            case undefined:
                ret = obj.innerHTML;
                break;
            default:
                ret = obj.value;
        }

    }
    return ret;
    /**/
}
function setValue(iname, ivalue) {
    /**/
    var obj = document.getElementById(iname)

    if (obj != null) {
        switch (obj.type) {
            case 'checkbox':
                setCheckbox(iname, ivalue);
                break;
            case 'radio':
                setRadio(iname, ivalue);
                break;
            case 'select-one':
                setSelected(iname, ivalue);
                break;
            case undefined:
                obj.innerHTML = ivalue;
                break;
            default:
                obj.value = ivalue;
        }
    }
    /**/
}