/* configurations */
var JS_CSS_PATH='/Scripts/NewWidget/css/js.css';
var VALIDATION_JS_PATH='/Scripts/NewWidget/js/form-validation.js';
var JQUERY_UI_JS_PATH='/Scripts/NewWidget/js/jquery-ui-1.6.custom.min.js';
var NEW_WINDOW_ICON_PATH='/Scripts/NewWidget/images/misc/icon_new_window.gif';
var DOWNLOAD_ICON_PATH='/Scripts/NewWidget/images/misc/icon_download.gif';
var SPACER_PATH='/Scripts/NewWidget/images/misc/spacer.gif';
var DNATA_SIFR_SWF_PATH='/Scripts/NewWidget/swf/sIFR/dnata.swf';
/* end configurations */

/* loads styles that are supposed to be present only when js is enabled. */
document.write('<link rel="stylesheet" type="text/css" href="'+JS_CSS_PATH+'" />');

/* if IE6, add an iframe so that layers can cover select boxes */
function addIframe(){
if( jQuery.browser.msie && (jQuery.browser.version=='6.0') ) { /* IE6 */
var style='position:absolute;display:block;visibility:visible;z-index:1;background-color:transparent;overflow:hidden';
var ifstr='<iframe style="position:relative; width:100%;height:100%;filter: progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);" src="javascript:\'<html></html>\'" frameborder="0" scrolling="no"></iframe>';
var id='ifr';
        $('body').append(
$('<div></div>').attr('id', id)
.attr('style', style)
.html(ifstr)
);
        document.getElementById(id).onfocus=null;
style=ifstr=id=null;
}
}

function menuImg(){
$('#menu img')
.filter(function(){
return $(this).attr('src').match('_off.');
})
.each(function(){ /* preload */
$('<img>').attr('src', $(this).attr('src').replace('_off', '_on'));
}).hover(
function(){ /* over */
$(this).attr('src', $(this).attr('src').replace('_off', '_on'));
},
function(){ /* out */
$(this).attr('src', $(this).attr('src').replace('_on', '_off'));
}
);

}

function linkIcons(){
/* put a trailing icon at external links */
$('a.external').not('.iconChanged').append(
['<img class="newWindowIcon" src="',NEW_WINDOW_ICON_PATH,'"/>'].join('')
).addClass('iconChanged');

/* put a leading icon at download links */
$('a.iconDownload').not('.iconChanged').prepend(
['<img class="iconB4Text" src="',DOWNLOAD_ICON_PATH,'"/>'].join('')
).addClass('iconChanged');
}

function closeBox(){
$('.closeBtn').click(function(){
var $pane=$(this).parents('.closable:first');
$pane.hide();
$pane.find('.content').html('');
$('#overlay').hide();
$pane=null;
});
}

function forms(){
var $f=$('.form');
var $nform=$f.not('.validate');

$f.find('input.autoCompleteOff').attr('autocomplete','off');

/* init no-validation forms */
/* forms needing validation is treated in FormValidation Object */
$nform.each(function(){
$thisForm=$(this);
var oneForm=$thisForm.parents('form:first').get(0);
$thisForm.find('.submit, input[type=submit], input[type=image], button').click(function(e){
e.preventDefault();
oneForm.action=$(this).parents('.form:first').find(':hidden[name=url]').attr('value');
oneForm.submit();
});
});

/* init form validations */
var $vform=$f.filter('.validate');
if($vform.length != 0){
jQuery.getScript(VALIDATION_JS_PATH, function(){
$vform.each(function(){
$(this).data('formValidator', 
new FormValidation({
bound: $(this),
errPane: $(this).find('.error')
}).init()
);
});
});
}

/* find brand on page top */
var f=$('#findABrandForm');
f.find('.submit, input[type=submit], input[type=image], button')
.unbind('click')
.click(function(e){
e.preventDefault();
var v=f.find('#findABrandWebSite').val();
if(v!='') {window.location=v;}
v=null;
});

$f=$nform=null;
}

function printButton(){
$('#print').click(function (e) {
e.preventDefault();
window.print();
});
}

function textFieldHint(){
$('.textHint').filter(function(){
return $(this).val()!=''
})
.addClass('textHintOn')
.focus(function(){
var $t=$(this);
$t.data('hasFocus',true);
/* if no initValue, set it as value */
if($t.attr('initValue')==null) {
$t.attr('initValue', $t.val());
}
/* if value==initValue, clear value */
if( $t.val()==$t.attr('initValue') ) {
$t.val('').removeClass('textHintOn');
}
$t=null;
})
.blur(function(){
var $t=$(this);
$t.data('hasFocus',false);
/* if value is empty (cleared), and initValue is present, set value=initValue */
if( ($t.val()=='') && ($t.attr('initValue') != null) ) {
$t.val($t.attr('initValue')).addClass('textHintOn');
}
$t=null;
})
.trigger('focus').trigger('blur');
}

function sendToFriend(){
var stf=$('#sendToFriend');
stf.align({ ref: $('#content'), top: 'top',  mid: 'mid', offTop: 50,  once: true});
$('#send').click(function(evt){
evt.preventDefault();
stf.appendTo('form');
hideAllExcept(stf);
transformIframe($('#overlay'));
$('#overlay').show();
sendToFriendFormReset();
stf.show();
mySIFRReplace('.sendToFriend h4.sIFR', { src: DNATA_SIFR_SWF_PATH }, '#1463A8');
});
}

function doOverlay(){
var $me=$('#overlay');
$me.attr('style', 'opacity:0.3'); /* set style here because this attribute is invalid in CSS2 */
if( jQuery.browser.msie ) { /* IE */
$me.attr('style', 'Filter: Alpha(Opacity=30)');
}
obj={element:$me, reference:$('body')};
stretchToFit(obj);
$(window).resize(function (){
stretchToFit(obj);
})
.scroll(function (){
var $sl;
stretchToFit(obj);
$sl=$(window).scrollLeft();
if($sl+$me.width()<=$(document).width()){
$me.css('left',$sl+'px');
}
$sl=null;
});
}

function sendToFriendForm(){
var friendFirstName='[Friend\'s Name]',
yourName='[Your Name]',
thisURL=window.location,
messageContent;

function setString() {
messageContent='Dear '+ friendFirstName +','+'\n\n'
+'You may be interested in this information: \n'+ thisURL+'\n\n'
+'Regards,'+'\n'
+yourName;
}
setString();
$('textarea.friendMessage').val(messageContent);
$('#sendToFriend .relateMessage').bind('blur', function() {
$('#friendFirstName').val()==""? friendFirstName='[Friend\'s Name]'
: friendFirstName=$('#friendFirstName').val();
$('#yourName').val()==""? yourName='[Your Name]'
: yourName=$('#yourName').val();
setString();
$('textarea.friendMessage').val(messageContent);
});
friendFirstName=yourName=messageContent=null;
}

function sendToFriendFormReset(){
var friendFirstName='[Friend\'s Name]',
yourName='[Your Name]',
thisURL=window.location,
messageContent,
f=$('#sendToFriend');
function setString() {
messageContent='Dear '+ friendFirstName +','+'\n\n'
+'You may be interested in this information: \n'+ thisURL+'\n\n'
+'Regards,'+'\n'
+yourName;
}
f.find('input[type=text]').val('');
f.find('select').attr('selectedIndex',0);
setString();
f.find('textarea.friendMessage').val(messageContent);
f.data('formValidator').clrerr();
}

function sendToFriendThankYou(){
var thank=$('#sendToFriendThankYou');
thank.align({ ref: $('#content'), top: 'top', mid: 'mid', offTop: 50, once: true});
thank.appendTo('form');
if(window.location.toString().indexOf("?thankyou")==-1) return;
hideAllExcept(thank);
transformIframe($('#overlay'));
$('#overlay').show();
thank.show();
mySIFRReplace('.sendToFriend h5', '', '#315775');
thank=null;
}

/* sideBar's select on change goes to URL */
function initSideBarSelect(){
$('#sideNav select').change(function(){
var v=$(this).val();
if(v!='') {window.location=v;}
v=null;
});
}

/* sideBar nav toggle more */
function sideBarNextMore(){
$('.sbNext .sbNextMoreItem').each(function(){
var li=$(this);
li.children('a').click(function(e){
var detail=li.find('.sbNextMore');
e.preventDefault();
if(detail.hasClass('hidden')) { /* first time */
li.addClass('down');
detail.removeClass('hidden').show();
$(this).addClass('open');
} else if(detail.is(':visible')) {
li.removeClass('text').removeClass('down');
detail.hide();
$(this).removeClass('open');
} else {
li.addClass('down');
detail.show();
$(this).addClass('open');
}
detail=null;
});
});
}

/* page-specific starts */
/* make bottom-right wrapped images */
function wrapImageBottomRight(){
/*
* idea from
* http://www.xs4all.nl/~jer03n/sandbox/float-bottom-right.html
*/
$('.wrappedImageBottomRight').each(function(){
var img=$(this);
var pushToBottom=function(){
var p=img.parent();
/* dh=new y pos - old y pos=parent's bottom pos - img's h - img's margins  - old y pos */
var dh=p.offset().top+p.height()
- img.height() - img.offset().top
- parseInt( img.css('margin-top').replace('px', '') )
- parseInt( img.css('margin-bottom').replace('px', '') );
$('<img class="bottompusher" width="1" height="1" alt="" />')
.attr('src', SPACER_PATH)
.insertBefore(img)
.height(dh);
p=dh=null;
}
if(img.height()==0) {
/* wait till image is loaded.  Google chrome and mac Safari 3 need this */
img.load(function(){
pushToBottom();
})
} else {
/* other browsers already knows img.height */
/* IE7 must use no img.load() */
pushToBottom();
}
});
}

function brandList(){
var $li, deltaY=8, selector, idCount=0;
$('.brandList li').each(function (){
$li=$(this);
var $des=$li.find('.brandDescription');
if( !$des.attr('id') ) { $des.attr('id', 'bdes'+idCount++); }
$des.appendTo('body');
$des.addClass('brandDescriptionDetached'); /* make it absolute positioned */
$li.find('a').mouseover(function (e) {
/* aligned with cursor */
if($des.css('display')=='none') {
$des.css('left', e.pageX)
.css('top', e.pageY+deltaY)
}
if( (e.screenY+$des.height()) > $(window).height() ) { /* not all $des can fit in window */
$des.css('top',
e.pageY - $des.height()
- $des.css('paddingBottom').replace('px','')
- $des.css('paddingTop').replace('px','')
- deltaY
); /* display $des on the top */
}
$des.show();
selector='#'+$des.attr('id')+' h3.sIFR';
mySIFRReplace(selector, {src:DNATA_SIFR_SWF_PATH}, '#1463A8');
transformIframe($des);
hideAllExcept($des);
}).mouseout(function (){
$des.hide();
});
$des.mouseover(function (){
$(this).show();
}).mouseout(function (){
$(this).hide();
});
});
}

function readMore(){
var labels=['Read More', 'Close'];
var changing=false;
$('.readMore').each(function(){
var mtr=$(this).find('.moreToRead').removeClass('hideWithJs').hide();
var ctrl=$(this).find('.readMoreCtrl').removeClass('hide').find('a').text(labels[0]);
$(this).removeClass('hide');
ctrl.click(function(evt){
evt.preventDefault();
if(changing) return;
changing=true;
mtr.slideToggle('', function(){
switch (ctrl.text()) {
case labels[0]:
ctrl.text(labels[1]);
break;
case labels[1]:
ctrl.text(labels[0]);
break;
}
changing=false;
});
});
});
}

function swf(){
if(typeof swfobject=='undefined') return;
if(swfobject.getFlashPlayerVersion().major!=0){
$('.seo').addClass('hide');
}
}
/* page-specific ends */

$(document).ready(function(){
addIframe();
doOverlay();

/* images */
menuImg();
linkIcons();
wrapImageBottomRight();

/* forms */
textFieldHint();
forms();
sendToFriend();
sendToFriendForm();
sendToFriendThankYou();

/* controls */
printButton();
closeBox();
initSideBarSelect();
sideBarNextMore();
readMore();
brandList();
swf();
});
