
/*
 * jQuery hashchange event - v1.2 - 2/11/2010
 */
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);


/**
 * Bth Ajax Functionality
 */
var bjaxoff = 0;
var bjaxdebug = 0;
var bjax_hashnavflag = 1;
var publishcounter = 0;

var infodiv = '#infodiv';
var infodivcontent = '#infodivcontent';
var infoasel = '#productinfo td a';
var infodefaultclick = '#productinfo td a.activebold';
var infoactive = 'activebold';
var contentdiv = '#contentdiv';
var contentinner = '#contentinner';
var pagedetail = '#pagedetail';
var pagedetailinner = '#pagedetailinner';
var col2 = '#col2';
var col2inner = '#col2inner';
var pglst = '#pglst';
var pglstinner = '#pglstinner';
var infoloadchain = new Array(infodiv,pagedetail,contentdiv);
var infoselectfromchain = new Array(infodivcontent,pagedetailinner,contentinner) ;
var contentloadchain = new Array(contentdiv);
var contentselectfromchain = new Array(contentinner) ;
var pagedetailloadchain = new Array(pagedetail,contentdiv);
var pagedetailselectfromchain = new Array(pagedetailinner,contentinner) ;
var pglstloadchain = new Array(pglst,col2,contentdiv);
var pglstselectfromchain = new Array(pglstinner,col2inner,contentinner) ;
var col2loadchain = new Array(col2,contentdiv);
var col2selectfromchain = new Array(col2inner,contentinner) ;
var loadintochain ;
var selectfromchain ;
var loadintodiv ;
var selectfromdiv ;

function bjaxclick(a, loaddiv, selectdiv, clickselector, clickactiveclass, defaultevent, chkscroll){
    if (selectdiv == undefined) 
        selectdiv = '';
    if (clickselector == undefined) 
        clickselector = '';
    if (clickactiveclass == undefined) 
        clickactiveclass = '';
    if (clickselector > '' && clickactiveclass > '') {
        $(clickselector).removeClass(clickactiveclass);
        $(a).addClass(clickactiveclass);
    }
    if (defaultevent == undefined) 
        defaultevent = '';
    if (chkscroll == undefined || chkscroll == 'true')
    	chkscroll = true ;
	else
		chkscroll = false ;
		
    if (bjaxoff == 1) {
		location.replace($(a).attr("href"))
        return false ;
    }

	setloaddivs(loaddiv);

    var href = $(a).attr("href");
    href = href.replace(/ /g, '+');
    var i = href.toLowerCase().indexOf('fr=info');
    if (i > 0) 
        href = href.substring(i + 3) + '.htm';
    else if(selectdiv > '')
        href = href + ' ' + selectfromdiv;
	else	
		selectfromdiv = '';

    $('.hiddenpageinfo').each(function() {
     	$(this).remove() ;
    });

    $(loadintodiv).load(href, function() {
		if ($('.hiddenpageinfo').attr('pagetitle') > '') {
			var newpublishcounter = Number($('.hiddenpageinfo').attr('publishcounter')) ;
			if (newpublishcounter != publishcounter) {
				location.reload(true) ;
				location.href = $(a).attr("href");
				return;
			}
			document.title = $('.hiddenpageinfo').attr('pagetitle');
			if ($('.hiddenpageinfo').attr('item') > '') {
				productheaders($('.hiddenpageinfo').attr('item'),document.title);
			}
		}
		href = $(a).attr("href") + ',' + loadintodiv + ',' + selectfromdiv + ',' + clickselector + ',' + clickactiveclass + ',' + defaultevent + ',' + $(window).scrollTop()

		if ($(a).hasClass('nohash') == false) {
			bjax_hashnavflag = 0;
			window.location.hash = Url.encode(cleanpath(Url.decode(href)));
		}

		if(defaultevent> '') {
			$(defaultevent).addClass('nohash');
     		$('.nohash').trigger('click');
     	}
		
	    if(chkscroll && $(window).scrollTop() > 300)
	    	$(window).scrollTop(0);

		$(a).removeClass('nohash');

   	});
	return false ;
}

function bjaxinit(){
	sessioninit();
	
	publishcounter = Number($('.hiddenpageinfo').attr('publishcounter'));
    $.ajaxSetup({
        cache: false,
		timeout: 5000,
        error: function(xhr, textStatus, thrownError){
			if (xhr.status == 3 || xhr.status == 500) {
                alert('Error reaching server.  Please try again.');
            }
        }
    });
    
	if ($('.hiddenpageinfo').attr('spider') == 'Y')
		bjaxoff = 1 ;
		
    if (bjaxoff == 1) 
        return;
        
    $(window).bind('hashchange', function(){
    	var url = Url.decode(window.location.hash);
        if (bjax_hashnavflag > 0) {
            if (url.length > 1) {
                url = url.substring(url.indexOf("#") + 1);
                aUrl = url.split(',');
                url = aUrl[0];
                var loaddiv = aUrl[1];
                var selectdiv = aUrl[2];
                var clickselector = aUrl[3];
                var clickactiveclass = aUrl[4];
                var defaultevent = aUrl[5];
                var scrollpos = aUrl[6];

				setloaddivs(loaddiv);

				if (bjax_hashnavflag == 2) {
                	loadintodiv = contentdiv ;
                	selectfromdiv = contentinner ;
                }

                $('.hiddenpageinfo').each(function() {
                 	$(this).remove() ;
                });

                $(loadintodiv).load(url + ' ' + selectfromdiv, function() {
			      	if ($('.hiddenpageinfo').attr('pagetitle') > '') {
						var newpublishcounter = Number($('.hiddenpageinfo').attr('publishcounter')) ;
						if (newpublishcounter != publishcounter) {
							location.replace($(a).attr("href"))
       						$(contentdiv).show();
							return;
						}
						document.title = $('.hiddenpageinfo').attr('pagetitle');
						
						if ($('.hiddenpageinfo').attr('item') > '') {
							productheaders($('.hiddenpageinfo').attr('item'),document.title);
						}
					}
                	if(defaultevent> '') {
						$(defaultevent).addClass('nohash');
			     		$('.nohash').trigger('click');
                 	}
    				$(window).scrollTop(scrollpos);
       				
       				$(contentdiv).show();

	                if (clickselector > '' && clickactiveclass > '') {
	                    var href = clickselector + '[href*="' + url + '"]';
	                    $(clickselector).removeClass(clickactiveclass);
	                    $(href).addClass(clickactiveclass);
	                }
					
               	});
            }
            else {
            	window.location.reload() ;
            }
        }
        else if (url.length == 0) {
        	window.location.reload() ;
        }
		bjax_hashnavflag = 1;
    })

  	var initurl = Url.decode(window.location.hash);
    if (initurl.length > 1) {
		//GOES TO THE URL ON THE HASH LINE IN CASE OF A BOOKMARK OR REFRESH OF PAGE
		//ALWAYS LOAD THE CONTENT DIV SO WE GET THE WHOLE PAGE.
		bjax_hashnavflag = 2;
		$(window).trigger('hashchange');
	}
	else {
		//MAKE SURE THE DIV IS SHOWN IF NO HASH
		$(contentdiv).show();
	}
	
    if (bjaxoff == 0) {
		$('a.bjaxlink').live('click', function(e) {
			e.preventDefault();
		});
	}
};

function bjaxclickhigh(clickselector, clickactiveclass){
    if (bjaxoff > 0) {
		var href = clickselector + '[href*="' + location.pathname + location.search + '"]';
		href = cleanpath(href);
		if ($(href).html() > '') {
			$(clickselector).removeClass(clickactiveclass);
			$(href).addClass(clickactiveclass);
		}
	}
}

function sessioninit() {
	session_data='?browser='+escape(navigator.userAgent)+ '&referer='+escape(document.referrer)+ '&CookiesEnabled='+navigator.cookieEnabled;
	session = new Image();
	session.src='SessionEstablish.asp' + session_data;
}

function cleanpath(path){
    path = path.replace(myregstr('http://flog/sonivoxmi_elvis'), '');
    path = path.replace(myregstr('/sonivoxmi_elvis/'), '');
    path = path.replace(myregstr('http://'), '');
    if(path.substring(0,1) == '/')
		path = path.substring(1);
    return path;
}

function bjaxpageload() {
    if (bjaxoff == 0) {
		// Hides the page during initialization if hash tag
		if (Url.decode(window.location.hash).length > 1) {
			document.write('<style type="text/css"> ' + contentdiv + ' { display: none; } </style>');
		}
	}
}

function setloaddivs(loaddiv, loadintochain, selectfromchain) {
	if (loaddiv == infodiv)
	{
		loadintochain = infoloadchain;
		selectfromchain = infoselectfromchain;
	}
	
	if (loaddiv == pagedetail) {
		loadintochain = pagedetailloadchain;
		selectfromchain = pagedetailselectfromchain;
	}
		
	if (loaddiv == contentdiv) {
		loadintochain = contentloadchain;
		selectfromchain = contentselectfromchain;
	}

	if (loaddiv == pglst) {
		loadintochain = pglstloadchain;
		selectfromchain = pglstselectfromchain;
	}

	if (loaddiv == col2) {
		loadintochain = col2loadchain;
		selectfromchain = col2selectfromchain;
	}
		
   	//LOOK FOR EXISTING DIV TO LOAD INTO
	for (i=0;i<loadintochain.length;i++) {
    	if ($(loadintochain[i]).length > 0) {
        	loadintodiv = loadintochain[i] ;
        	selectfromdiv = selectfromchain[i] ;
			break ;
		} 
	}
}

function productheaders(item,title) {	
	$.wtMeta('og:title',title);
	$.wtMeta('og:type','product');
	$.wtMeta('og:url','http://www.sonivoxmi.com/productdetail.asp?item=' + item);
	$.wtMeta('og:image','http://www.sonivoxmi.com/images/products/170px/' + item + '.png');
	FB.XFBML.parse();
}
/*** END BJAX ***/


function setCookie(name, value){
    var path = "/";
    var domain = "";
    var secure = false;
    document.cookie = name + "=" + escape(value) + "; expires=" + getexpirydate(365)
}

function getCookie(name){
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) 
            return null;
    }
    else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

/**
 *
 *  URL encode / decode
 *  http://www.webtoolkit.info/
 *
 **/
var Url = {

    // public method for url encoding
    encode: function(string){
        return escape(this._utf8_encode(string));
    },
    
    // public method for url decoding
    decode: function(string){
        return this._utf8_decode(unescape(string));
    },
    
    // private method for windows-1252 encoding
    _utf8_encode: function(string){
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        
        for (var n = 0; n < string.length; n++) {
        
            var c = string.charCodeAt(n);
            
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else 
                if ((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
                else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
            
        }
        
        return utftext;
    },
    
    // private method for windows-1252 decoding
    _utf8_decode: function(utftext){
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        
        while (i < utftext.length) {
        
            c = utftext.charCodeAt(i);
            
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else 
                if ((c > 191) && (c < 224)) {
                    c2 = utftext.charCodeAt(i + 1);
                    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                    i += 2;
                }
                else {
                    c2 = utftext.charCodeAt(i + 1);
                    c3 = utftext.charCodeAt(i + 2);
                    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                    i += 3;
                }
            
        }
        
        return string;
    }
}

function getexpirydate(nodays){
    var UTCstring;
    Today = new Date();
    nomilli = Date.parse(Today);
    Today.setTime(nomilli + nodays * 24 * 60 * 60 * 1000);
    UTCstring = Today.toUTCString();
    return UTCstring;
}

function loadslides(slide) {
	slidefile = $("#slide" + slide).attr("href");
	if (slidefile == undefined)
		return false;
	$("#slide" + slide).load(slidefile, function() {
		loadslides(++slide) ;
    });
}

/* JQUERYTOOLS SLIDE SHOW */
function initSlides(rotate, htmlchain){
	loadslides(1);

    $(".slidetabsbut").tabs(".slideimages > div", {
        effect: 'fade',
        fadeOutSpeed: "slow",
        rotate: rotate
    }).slideshow({
        autoplay: true,
        autopause: true,
        interval: 5000
    });
}

/* FACEBOOK */
var fb_app_id = "151033998288097";

function fbinit(height,width){
	sessioninit();
	
    window.fbAsyncInit = function(){
        FB.init({
            appId: fb_app_id,
            status: true,
            cookie: true,
            xfbml: true
        });
		if (height != undefined && width != undefined)
			FB.Canvas.setSize({ width: height, height: width });            

    };
    (function(){
        var e = document.createElement('script');
        e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#appId=' + fb_app_id + '&amp;xfbml=1';
        document.getElementById('fb-root').appendChild(e);
    }());
}

function fbload(a, loaddiv, clickselector, clickactiveclass, href){
    if (clickactiveclass == undefined) 
        clickactiveclass = '';
    if (clickselector > '' && clickactiveclass > '') {
        $(clickselector).removeClass(clickactiveclass);
        $(a).addClass(clickactiveclass);
    }
    
    $(loaddiv).load(href, function(){
        FB.XFBML.parse()
    });
    
    return false;
}

function preg_quote(str){
    //puts backslashes on chars in regular expressions
    return (str + '').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
}

function myregstr(str){
    return new RegExp(preg_quote(str), 'gi');
    
}

function listselector(sel, attr){
    alert('LISTING:\n' + sel + '\n\nATTR:\n' + attr);
    $(sel).each(function(){
        alert($(this).attr(attr));
    });
}

function hasflash(){
    if (navigator.mimeTypes["application/x-shockwave-flash"] == undefined) 
        return false;
    else 
        return true;
}

function isiPhone(){
    return ((navigator.platform.indexOf("iPhone") != -1) ||
    (navigator.platform.indexOf("iPod") != -1));
}

(function($){
    $.wtMeta = function(){
        var $Meta;
        if($('meta[name='+arguments[0]+']').size()>0){
            $Meta=$('meta[name='+arguments[0]+']');
        }else if($('meta[property='+arguments[0]+']').size()>0){
            $Meta=$('meta[property='+arguments[0]+']');
        }else{
            $Meta=$('meta[http-equiv='+arguments[0]+']');
        }

        if(arguments.length==1) return $Meta.attr('content');
        else $Meta.attr('content',arguments[1]);
    };
})(jQuery);

function hideempty(){
	$('.hideempty').each(function(){
		if ($(this).text().length < 10)
			$(this).hide();
	});
}

/*** BEGIN DIV-MENU ***/
var lwmMenuTimer ;

function startTimeOut(ms) {
    endTimeOut();

    lwmMenuTimer = setTimeout('clearMenus()',ms);
}

function endTimeOut() {
    if (lwmMenuTimer == null) 
	    return;
        
    clearTimeout(lwmMenuTimer);
}

function clearMenus() {
    endTimeOut();
    $('#div-menu td a').removeClass('divmenushow');
	for (i=0; i<10; i++)  
	    hideDiv('MenuRow' + i); 
}

function showDiv(divID_as_a_string, sLeftPix) {
	var myReference = getRefToDiv(divID_as_a_string);
	if( !myReference ) {  return; }

    myReference.style.left = sLeftPix;
	if( myReference.style ) { myReference.style.visibility = 'visible'; } else {
		if( myReference.visibility ) { myReference.visibility = 'show'; } else {
			 return; } }
}

function showMenu(a, divID_as_a_string) {
	sLeftPix = getPosition(a,document.getElementById(divID_as_a_string));
    clearTimeout(lwmMenuTimer);

	for (i=0; i<10; i++)  
	    hideDiv('MenuRow' + i); 
    showDiv(divID_as_a_string, sLeftPix);
    $(a).addClass('divmenushow');
}

function doNuhn() {}

function getRefToDiv(divID,oDoc) {
	if( document.getElementById ) { return document.getElementById(divID); }
	if( document.all ) { return document.all[divID]; }
	if( !oDoc ) { oDoc = document; }
	if( document.layers ) {
		if( oDoc.layers[divID] ) {
			return oDoc.layers[divID];
		} else {
			for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
				y = getRefToDiv(divID,oDoc.layers[x].document);
			}
			return y;
		}
	}
	return false;
}

function hideDiv(divID_as_a_string) {
    $('#div-menu td a').removeClass('divmenushow');

	var myReference = getRefToDiv(divID_as_a_string);
	if( !myReference ) {  return; }
	if( myReference.style ) { myReference.style.visibility = 'hidden'; } else {
		if( myReference.visibility ) { myReference.visibility = 'hide'; } else {
			 return; } }
}

function getPosition(obj,div){
	var left = $(obj).position().left - $('#div-menu').position().left - (div.clientWidth / 2) + (obj.clientWidth / 2) ;
	if (left < 0) left = 0 ;
	return left + 'px';
}
/*** END DIV-MENU ***/


