
/** 
 * faster access to some oft-used functions
 */
var $  = YAHOO.util;
var $D = $.Dom;
var $C = $.Connect;
var $E = $.Event;

var isIE = (navigator.appName.indexOf("Microsoft") != -1);

var imgPath_spacer = "../images/global/spacer.gif";

/* element names */

var elName_button = "button";
var elName_filler = "filler";
var elName_error = "error";
var elName_dropdown = "dropdown";
var elName_png = "pngFix";

var elName_tabCurrent = "tabNavCurrent";
var elName_tabShow = "tabShow";
var elName_tabHide = "tabHide";

/* flash tour parameters */

var flashPath_flashTour = "tour.swf";

var elId_flashTourDiv = "boxTour";
var elId_tourButton = "tourButton";

var imgPath_showTourButton = "../images/btn_showtour_up.gif";
var imgPath_hideTourButton = "../images/btn_hidetour_up.gif";

var altText_showTourButton = "SHOW TOUR";
var altText_hideTourButton = "HIDE TOUR";

/* button parameters */

var buttonExt_up = "up";
var buttonExt_over = "ov";
var buttonExt_down = "dn";


/* utility functions */

function getScrollY() {
	if(typeof window.pageYOffset != 'undefined')
		return window.pageYOffset;					
	else if(document.documentElement.scrollTop)	
		return document.documentElement.scrollTop;				
	else if(document.body.scrollTop)	
		return document.body.scrollTop;
	else
		return 0;
}

function initFaq(el) {
	
	index = el.id.substr(1);

	el.href = "javascript:;"
	eval("el.onclick = function() {toggleElement('a"+index+"');}");
}

function initButton(el) {
	var buttonSrc = el.src.substr(0,el.src.length-6);
	var buttonExt = el.src.substr(el.src.length-4);
	eval("el.onmouseover = function() {this.src = '"+buttonSrc+buttonExt_over+buttonExt+"';}");
	eval("el.onmouseout = function() {this.src = '"+buttonSrc+buttonExt_up+buttonExt+"';};");
	eval("el.onmouseup = function() {this.src = '"+buttonSrc+buttonExt_up+buttonExt+"';};");
	eval("el.onmousedown = function() {this.src = '"+buttonSrc+buttonExt_down+buttonExt+"';};");
}

/**
 * fix PNG images for IE
 */

function initPNG(el) {
	var pngSrc = el.src;
	el.src = imgPath_spacer;
	el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+pngSrc+"', sizingMethod='scale')";
}

/**
 * form field filler
 */

function initFiller(el) {
	if(el.type == "text") {
		var fillerText = el.value;
		if(fillerText != null && fillerText != "") {
			eval("el.onfocus = function() {if(this.value == '"+fillerText+"') this.value = '';}");
			eval("el.onblur = function() {if(this.value == '') this.value = '"+fillerText+"';}");
		}
	}
}

/**
 * form field error states
 */

function initError(el) {
	if(el.tagName == "SELECT" || (el.tagName == "INPUT" && el.type == "text") || (el.tagName == "INPUT" && el.type == "file"))
		eval("el.onfocus = function() {this.style.backgroundColor = '#fff'; this.style.color = '#666';}");
}

/**
 * hide/show flash tour
 */

function toggleTour(file,label) {
	var tourButton = document.getElementById(elId_tourButton);
	if(document.getElementById(elId_flashTourDiv).style.display != "block") {
		if(tourButton) {
			tourButton.src = imgPath_hideTourButton;
			tourButton.altText = altText_hideTourButton;
			tourButton.title = altText_hideTourButton;
			initButton(tourButton);
		}
		var flashTour = new SWFObject(flashPath_flashTour, "flashTour", "204", "204", "7", "#efefef");
		flashTour.addVariable("videoFile",file);
		flashTour.addVariable("videoLabel",label);
		flashTour.write(elId_flashTourDiv);
		document.getElementById(elId_flashTourDiv).style.display = "block";
	} else {
		if(tourButton) {
			tourButton.src = imgPath_showTourButton;
			tourButton.altText = altText_showTourButton;
			tourButton.title = altText_showTourButton;
			initButton(tourButton);
		}
		document.getElementById(elId_flashTourDiv).style.display = "none";
		document.getElementById(elId_flashTourDiv).innerHTML = "&nbsp;";
	}
}

function hideTour() {
	
	document.getElementById(elId_flashTourDiv).style.display = "none";
	document.getElementById(elId_flashTourDiv).innerHTML = "&nbsp;";
}

/**
 * hide/show a page element
 */

function toggleElement(elId) {
	if($D.get(elId).style.display == "block")
		$D.get(elId).style.display = "none";
	else
		$D.get(elId).style.display = "block";
}

/**
 * hide/show two page elements 
 */

function toggleElements(elOne,elTwo) {
	if($D.get(elOne).style.display == "block" || $D.get(elOne).style.display == "") {
		$D.get(elOne).style.display = "none";
		$D.get(elTwo).style.display = "block";
	} else {
		$D.get(elOne).style.display = "block";
		$D.get(elTwo).style.display = "none";
	}
}

function toggleSubmit(el) {
	
	var button = $D.getElementsByClassName("buttonSubmit")[0];

	if(el.checked) {
		
		button.disabled = "";
		button.src = "../images/global/buttons/btn_submit_up.gif";
		initButton(button);

	} else {
		
		button.src = "../images/global/buttons/btn_submit_disabled.gif";
		button.disabled = "disabled";
	}
}

function toggleLogin() {

	if(document.getElementById('cntHeaderLoginForm').style.visibility == "visible") {
		
		document.getElementById('cntHeaderLoginForm').style.visibility = "hidden";
		document.getElementById('cntHeaderLogin').style.visibility = "visible";

		if(document.getElementById('cntHeaderLoginError').style)
			document.getElementById('cntHeaderLoginError').style.visibility = "hidden";

	} else {
		
		document.getElementById('cntHeaderLoginForm').style.visibility = "visible";
		document.getElementById('cntHeaderLogin').style.visibility = "hidden";

		if(document.getElementById('cntHeaderLoginError').style)
			document.getElementById('cntHeaderLoginError').style.visibility = "visible";
	}
}

/**
 * tabbed elements
 */

function openTab(tab,el) {
    var ul = el.parentNode.parentNode;
    var lis = ul.getElementsByTagName('li');
	for(i=0; i<lis.length; i++) {
		var content = lis[i].firstChild.innerHTML;
		if(lis[i].innerHTML == '<P id='+lis[i].firstChild.id+'>'+lis[i].firstChild.innerHTML+'</P>')
			lis[i].innerHTML = '<a href="javascript:;" onclick="openTabLock(this);" id="'+lis[i].firstChild.id+'">'+content+'</a>'
	}
    $D.removeClass(lis,elName_tabCurrent);
    $D.addClass(el.parentNode,elName_tabCurrent);
    el.blur();
    var tabContents = $D.getElementsByClassName(elName_tabShow);
    $D.removeClass(tabContents,elName_tabShow);
    $D.addClass(tabContents,elName_tabHide);
    $D.addClass(tab,elName_tabShow);

	for(i=0; i<lis.length; i++) {
		sname = lis[i].firstChild.id.substr(0,lis[i].firstChild.id.length-3);
		if(document.getElementById(sname+"Intro"))
			document.getElementById(sname+"Intro").style.display = "none";
	}
	var sname = el.id.substr(0,el.id.length-3);
	if(document.getElementById(sname+"Intro"))
		document.getElementById(sname+"Intro").style.display = "block";
}

function openTabLock(el) {
	var tab = el.id.substr(0,el.id.length-3);
	var form = document.getElementById(tab);
	var inputs = form.getElementsByTagName('input');
	var selects = form.getElementsByTagName('select');
	for(i=0; i < inputs.length; i++) {
		if(inputs[i].tagName == "SELECT" || (inputs[i].tagName == "INPUT" && (inputs[i].type == "text" || inputs[i].type == "password"))) {
			eval("inputs[i].onkeydown = function() {lockTabs('"+el.id+"');}");
		}
		if(inputs[i].tagName == "INPUT" && (inputs[i].type == "checkbox" || inputs[i].type == "radio")) {
			eval("inputs[i].onclick = function() {if((this.checked && !this.defaultChecked) || (!this.checked && this.defaultChecked)) lockTabs('"+el.id+"');}");
		}
	}

	for(i=0; i < selects.length; i++)
		eval("selects[i].onchange = function() {lockTabs('"+el.id+"');}");

	openTab(tab,el);
}

function lockTabs(elId) {
	var el = document.getElementById(elId);
	var ul = el.parentNode.parentNode;
    var lis = ul.getElementsByTagName('li');
	for(i=0; i<lis.length; i++) {
		if(lis[i].firstChild.innerHTML != el.innerHTML) {
			lis[i].innerHTML = '<P id="'+lis[i].firstChild.id+'">'+lis[i].firstChild.innerHTML+'</P>';
		}
	}
}

function unlockTabs(elId) {
	var sname = elId.substr(0,elId.length-6);
	document.getElementById(sname+"Form").reset();
	var el = document.getElementById(sname+"Tab");
	var tab = el.id.substr(0,el.id.length-3);
	openTab(tab,el);
}

/** 
 *  CREATE TOOLTIPS DYNAMICALLY
 *  HOWTO: <a href="javascript:;" class="tooltip" title="text to appear in tooltip">Link Text</a>
 */
YAHOO.namespace("sony.tooltip");

/**
 * makeTooltipText
 * @param string text text to insert into the tooltip look and feel
 * @return string HTML Tooltip
 */
function makeTooltipText(text) {
    if(text.length > 100)
		ttclass = 'tooltipLarge';
	else
		ttclass = 'tooltip';

	return tooltipBody = ' \
        <div class="'+ttclass+'"> \
            <div class="ttt">&nbsp;</div> \
            <div class="ttm">'+ text +'</div> \
            <div class="ttb">&nbsp;</div> \
        </div>';
}

/**
 * showTooltip
 * onMouseOver event handler for tooltip links
 * @param object e the event object
 */
function showTooltip(e) { 
    var id = this.getAttribute("id");
    $D.get(id).setAttribute("title","");
    YAHOO.sony.tooltip[id].render(document.body);
    YAHOO.sony.tooltip[id].cfg.refresh(); 
    YAHOO.sony.tooltip[id].show();
}

/**
 * hideTooltip
 * onMouseOut event handler for tooltip links
 * @param object e the event object
 */
function hideTooltip(e) { var id = this.getAttribute("id"); YAHOO.sony.tooltip[id].hide(); }

/**
 * initTooltips
 * Initializes the tooltip links on the page.  This is run after the document has fully loaded.
 */
function initTooltips()
{
    var tooltips = $D.getElementsByClassName("tooltip");
    for(var t=0; t<tooltips.length; t++) {
        // grab the id of the tooltip
        var id = $D.generateId(tooltips[t], "srToolTip");
        var el = $D.get(id);
        // only process tooltips with text in the title attribute
        if(el.getAttribute("title") != "") {
            var tooltipText = makeTooltipText(el.getAttribute("title"));
            YAHOO.sony.tooltip[id] = new YAHOO.widget.Overlay(id+'Content', 
                { 
                    context: [id,"bl","tl"],
                    constraintoviewport: false,
                    showDelay: 250,
                    hideDelay: 250,
                    visible: false,
                    zIndex: 1000
                });
            YAHOO.sony.tooltip[id].setBody(tooltipText);
            $E.addListener(id,"mouseover",showTooltip);
            $E.addListener(id,"mouseout",hideTooltip);
        }
    }
}

/**
 * Add the window.onload event handler to init the tooltips on the page
 */
$E.addListener(window,"load",initTooltips);


/**
 * initProductThumbs
 * Initializes the product thumbnail links on the page.  This is run after the document has fully loaded.
 */
function initProductThumbs()
{
    var tooltips = $D.getElementsByClassName("prodThumb");
    for(var t=0; t<tooltips.length; t++) {
        // grab the id of the tooltip
        var id = $D.generateId(tooltips[t], "srProdThumb");
        var el = $D.get(id);
        var tooltipText = el.getAttribute("title");
        YAHOO.sony.tooltip[id] = new YAHOO.widget.Overlay(id+'Content', 
            { 
                context: [id,"tl","bl"],
                constraintoviewport: false,
                showDelay: 250,
                hideDelay: 250,
                visible: false,
                zIndex: 1000
            });
        YAHOO.sony.tooltip[id].setBody(tooltipText);
        $E.addListener(id,"mouseover",showTooltip);
        $E.addListener(id,"mouseout",hideTooltip);
    }
}
/**
 * Add the window.onload event handler to init the tooltips on the page
 */
$E.addListener(window,"load",initProductThumbs);

/* page load */
function pageInit(event) {

	var buttons = YAHOO.util.Dom.getElementsByClassName(elName_button,"img");
	buttons = buttons.concat(YAHOO.util.Dom.getElementsByClassName(elName_button,"input"));
	
	for(i = 0; i < buttons.length; i++)
		initButton(buttons[i]);

	var fillers = YAHOO.util.Dom.getElementsByClassName(elName_filler,"input");
	
	for(i = 0; i < fillers.length; i++)
		initFiller(fillers[i]);

	var errors = YAHOO.util.Dom.getElementsByClassName(elName_error,"input");
	errors = errors.concat(YAHOO.util.Dom.getElementsByClassName(elName_error,"select"));
	
	for(i = 0; i < errors.length; i++)
		initError(errors[i]);

	if(isIE) {
		
		var pngs = YAHOO.util.Dom.getElementsByClassName(elName_png,"img");
	
		for(i = 0; i < pngs.length; i++)
			initPNG(pngs[i]);
	}

	var faqs = YAHOO.util.Dom.getElementsByClassName("faq","a");

	for(i = 0; i < faqs.length; i++)
		initFaq(faqs[i]);
}

YAHOO.util.Event.addListener(window, "load", pageInit);

