/* ---------- js/siteGlobal.js ---------- */

var siteGlobal=function(){function validateForm(id){function isEmpty(val){var testExp=/^\w+/i;return(testExp.test(val))?false:true;}
var errors=[];var formEl=($(id).tagName=='FORM')?$(id):$(id).down('form');formEl.select('.req').each(function(el,i){if(el.hasClassName('req')){var elLbl=$(el.id+'_label').innerHTML;switch(el.tagName){case'INPUT':switch(el.type){case'text':if(isEmpty(el.value)){errors.push(elLbl+' was left empty.');}else{if(el.hasClassName('email')){var format=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;if(!format.test(el.value)){errors.push(elLbl+' is formatted wrong.');}}}
break;case'radio':break;case'checkbox':break;}
break;case'SELECT':if(el.value==''){errors.push(elLbl+' was left empty.');}
break;case'TEXTAREA':if(isEmpty(el.value)){errors.push(elLbl+' was left empty.');}
break;}}});return errors;}
function alertErrors(errEL,errs,type){if(errs.length>0){var errStr='';errs.each(function(err){errStr+='<li>'+err+'</li>';});errStr='<div class="errContent"><h2>The following errors have been detected:</h2><ol>'+errStr+'</ol><div class="close" onclick="javascript:siteGlobal.closeFormMsg(this);"></div></div>';var errMsgEL=errEL.next('div.errMsg');if(errMsgEL===undefined){var newEL=new Element('div',{'class':'errMsg','style':'display:none;'});errEL.insert({'after':newEL});errMsgEL=errEL.next('div.errMsg');}
errMsgEL.update(errStr).blindDown({'duration':.5});}}
var pub=function(){return{emailFriendPop:function(siteID,contentID){if(!$('eFriendPopUp')){var newEL=new Element('div',{'id':'eFriendPopUp','style':'display:none'});$('tWrapper').insert({'bottom':newEL});}
var eForm='<div class="wrapper">\
    <div class="form">\
    <h2>E-mail this page to a colleague.</h2>\
    <form id="eFriendForm" action="#" method="post" onsubmit="return siteGlobal.emailFriendSend();">\
    <fieldset>\
    <legend>To:</legend>\
    <div class="cols">\
     <div class="col">\
      <label id="ToName_label" for="ToName">Name</label>\
      <input type="text" class="text req" id="ToName" name="ToName" value="" />\
     </div>\
     <div class="col">\
      <label id="ToEmail_label" for="ToEmail">Email</label>\
      <input type="text" class="text req email" id="ToEmail" name="ToEmail" value="" />\
     </div>\
    </div>\
    </fieldset>\
    <fieldset>\
    <legend>From:</legend>\
    <div class="cols">\
     <div class="col">\
      <label id="FromName_label" for="FromName">Name</label>\
      <input type="text" class="text req" id="FromName" name="FromName" value="" />\
     </div>\
     <div class="col">\
      <label id="FromEmail_label" for="FromEmail">Email</label>\
      <input type="text" class="text req email" id="FromEmail" name="FromEmail" value="" />\
     </div>\
    </div>\
    </fieldset>\
    <fieldset class="formButtons">\
     <input type="submit" class="formButton fSubmit" value="" />\
     <input type="button" class="formButton fCancel" onclick="siteGlobal.emailFriendClose();" />\
    </fieldset>\
    <input type="hidden" name="siteID" value="'+siteID+'" />\
    <input type="hidden" name="contentID" value="'+contentID+'" />\
    </form>\
    </div>\
    </div>';var formEL=$('eFriendPopUp').update(eForm).appear({'durtion':.5});},emailFriendSend:function(){var formEL=$('eFriendForm');var errors=validateForm(formEL);if(errors.length>0){alertErrors(formEL,errors);}else{var ajaxFile='ajax/emailFriend.php';var ajaxParams=formEL.serialize(true);ajaxParams.cmd='send';var ajaxOpts={method:'post',parameters:ajaxParams,onSuccess:function(resp){resp=resp.responseText.strip().evalJSON();var thanksMSG='<fieldset>'+resp.msg+'</fieldset><fieldset class="formButtons"><input type="button" class="formButton fClose" onclick="siteGlobal.emailFriendClose();" /></fieldset>';formEL.onsubmit=null;formEL.update(thanksMSG);}}
new Ajax.Request(ajaxFile,ajaxOpts);}
return false;},emailFriendClose:function(){var fEL=$('eFriendPopUp');fEL.fade({'durtion':.5});},printFriendly:function(contentID,siteID){var siteID=siteID||1;var pURL=this.baseHTML+'printFriendly.php';var pCSS='printFriendly/site_'+siteID+'/site_'+siteID+'.css';Dynalicious.printFriendly({'el':'.printFriendly','url':pURL,'css':pCSS});},siteLogin:function(){var formEL=$('loginForm');var errors=validateForm(formEL);if(errors.length<1){var ajaxFile='ajax/front_login.php';var ajaxParams=formEL.serialize(true);ajaxParams.cmd='login';var ajaxOpts={method:'post',parameters:ajaxParams,onSuccess:function(resp){resp=resp.responseText.strip().evalJSON();if(resp.errors.length>0){alertErrors(formEL,resp.errors);}else{window.location=resp.redir;}}}
new Ajax.Request(ajaxFile,ajaxOpts);}else{alertErrors(formEL,errors);}
return false;},closeFormMsg:function(btnEL){$(btnEL).up('.errMsg').blindUp({'duration':.5});},popUpImg:function(img){var newEL=new Element('div',{'id':'imgPopUp','class':'imgPopUp','style':'visibility:hidden;position:absolute;top:0;z-index:999999;left:50%;'}).update('<img src="'+img+'" /><div class="close" onclick="javascript:siteGlobal.closePopUpImg(this);"></div>');$('tWrapper').insert({'bottom':newEL});var popEL=$('imgPopUp');var popImg=popEL.down('img');new PeriodicalExecuter(function(pe){var imgDims=popImg.getDimensions();if(imgDims.width>0){var divWidth=imgDims.width;var divHeight=imgDims.height;var divMar=0-(divWidth/2);popEL.setStyle({'display':'none','visibility':'visible','marginLeft':divMar+'px','width':divWidth+'px','height':divHeight+'px'});popEL.blindDown({'duration':.5});pe.stop();}},.1);},closePopUpImg:function(btnEL){$(btnEL).up('.imgPopUp').blindUp({'duration':.5,'afterFinish':function(){$(btnEL).up('.imgPopUp').remove();}});}}}();return pub;}();function send_msg(){var errors=new Array();var error_msg="The following errors have been detected:\n----------------------------------------\n";if($('name').value==''||$('name').value==' '){errors.push('Please fill in your name!');}
if($('email').value==''||$('email').value==' '){errors.push('Please fill in your email!');}
if($('message').value==''||$('message').value==' '){errors.push('Please send me a message!');}
if(errors.length>0){for(var i=0;i<errors.length;i++){error_msg+=(i+1)+". "+errors[i]+"\n";}
error_msg+="----------------------------------------\nPlease fix and re-submit.";alert(error_msg);}else{var ajax_script='http://www.dalyvisions.com/ajax/send_msg.php';var params='email='+encodeURIComponent($('email').value)+'&name='+encodeURIComponent($('name').value)+'&message='+encodeURIComponent($('message').value)+'&doit=y';var opts={method:'post',parameters:params,onSuccess:function(resp){alert(resp.responseText);$('contact_form').innerHTML='<p class="msg">Thanks for your inquiry into dalyVisions!</p>';},onFailure:function(){alert('Something went wrong...');}};new Ajax.Request(ajax_script,opts);}}
var curr_picts=null;function showPicts(picts){if(curr_picts!=null){new Effect.BlindUp(curr_picts);}
new Effect.BlindDown(picts);curr_picts=picts;}
function hidePicts(picts){new Effect.BlindUp(picts);curr_picts=null;}
function focusField(id,str){var val=$(id).value;if(val==str){$(id).value='';}}
function blurField(id,str){var val=$(id).value;if(val==''){$(id).value=str;}}
function FAQToggleAnswer(question){var answers=question.getElementsByTagName('ul');if(answers[0]){if(answers[0].style.display!='block'){answers[0].style.display='block';}else{answers[0].style.display='none';}}}
function siteSearch(on_submit){var errors=[];var error_srting='';var form_el=$('siteSearch_form');var search_phrase=$('siteSearch_phrase').value;if(search_phrase==''||search_phrase=='-search-'){errors.push('Search phrase was left empty.');}
if(errors.length>0){error_srting='The following errors have been detected:'+"\n\n";for(var i=0;i<errors.length;i++){error_srting+=(i+1)+'. '+errors[i]+"\n";}
error_srting+="\n"+'Please fix these errors and re-submit the form.';alert(error_srting);if(on_submit){return false;}}else{if(on_submit){return true;}else{form_el.submit();}}}
function joinEmail(on_submit){var errors=[];var error_srting='';var form_el=$('joinEmail_form');if($('join_email').value==''){errors.push('Please enter your email address.');}
if(errors.length>0){error_srting='The following errors have been detected:'+"\n\n";for(var i=0;i<errors.length;i++){error_srting+=(i+1)+'. '+errors[i]+"\n";}
error_srting+="\n"+'Please fix these errors and re-submit the form.';alert(error_srting);if(on_submit){return false;}}else{if(on_submit){return true;}else{form_el.submit();}}}
function featured(id,state,url){switch(state){case'over':$(id).addClassName('featuredItem_hover');break;case'out':$(id).removeClassName('featuredItem_hover');break;case'click':window.location=url;break;}}

/* ---------- js/VidLib/VidLib.js ---------- */

var VidLib=function(){var BASE=Dynalicious.httpBase+'js/VidLib/';var ajaxFile=BASE+'ajax/';var cssFile=BASE+'css/default.css';var SELF=this;var el=null;var langID=0;var catID=0;var vidID=0;var LANGS=[];var CATS=[];var VIDS=[];var ajaxRunning=[];function getSelected(type){var selected=undefined;var pEl=$(type).down('.content')||undefined;if(pEl!==undefined&&!pEl.empty()){var focusEl=pEl.down('li.focus');if(focusEl!==undefined){var preFocusEl=focusEl.previous('li',0);var focusIndex=0;while(preFocusEl!==undefined){focusIndex++;preFocusEl=preFocusEl.previous('li',0);}
switch(type){case'langs':selected=LANGS[focusIndex];break;case'cats':selected=CATS[focusIndex];break;case'vids':selected=VIDS[focusIndex];break;}}}
return selected;}
function getElIndex(el,selector){var elIndex=0;var preEl=el.previous(selector);while(preEl!==undefined){elIndex++;preEl=preEl.previous(selector);}
return elIndex;}
function ajaxIdle(fnc){return(inArray(fnc,ajaxRunning))?false:true;}
function ajaxStart(fnc){ajaxStop(fnc)
ajaxRunning.push(fnc);}
function ajaxStop(fnc){var i,len=ajaxRunning.length;for(i=0;i<len;i++){if(fnc==ajaxRunning[i]){ajaxRunning.splice(i,1);break;}}}
function inArray(needle,haystack){var i,hayLen=haystack.length;for(i=0;i<hayLen;i++){if(needle==haystack[i]){return true;}}
return false;}
function getLangs(){ajaxStart('getLangs');var ajaxOpts={method:'get',parameters:{'cmd':'getLangs'},onSuccess:function(resp){resp=resp.responseText.strip().evalJSON();LANGS=resp.data;ajaxStop('getLangs');}}
new Ajax.Request(ajaxFile,ajaxOpts);}
function getCats(){ajaxStart('getCats');var ajaxOpts={method:'post',parameters:{'cmd':'getCats','langID':langID},onSuccess:function(resp){resp=resp.responseText.strip().evalJSON();CATS=resp.data;ajaxStop('getCats');}}
new Ajax.Request(ajaxFile,ajaxOpts);}
function getVids(){new PeriodicalExecuter(function(pe){if(ajaxIdle('getCats')){ajaxStart('getVids');var ajaxOpts={method:'post',parameters:{'cmd':'getVids','langID':langID,'catID':catID},onSuccess:function(resp){resp=resp.responseText.strip().evalJSON();VIDS=resp.data;ajaxStop('getVids');}}
new Ajax.Request(ajaxFile,ajaxOpts);pe.stop();}},.1);}
function listLangs(){var focusID=langID;var focusIndex=-1;getLangs();new PeriodicalExecuter(function(pe){if(ajaxIdle('getLangs')){var container=$('langs');var content='';var items=LANGS;if(items.length>0){var itemsList=[];items.each(function(item,i){if(item.id==focusID){focusIndex=i;}
itemsList.push('<li>'+item.title+'</li>');});content='<ul>'+"\n"+itemsList.join('')+'</ul>'+"\n";}
itemContent='<div class="Dynalicious DynaScroll scroll" DynaParams="{\'theme\':null,\'info\':[\'both\',null]}" id="langsList"><div class="DynaContainer">'+content+'</div></div>';container.down('.content').update(itemContent);Dynalicious.reload(container);if(focusIndex>-1){selectLang(focusIndex);}
pe.stop();}},.1);}
function listCats(){var focusID=catID;var focusIndex=-1;getCats();new PeriodicalExecuter(function(pe){if(ajaxIdle('getCats')){var container=$('cats');var content='';var items=CATS;if(items.length>0){var itemsList=[];items.each(function(item,i){if(focusID==item.id){focusIndex=i;}
itemsList.push('<li>'+item.title+'</li>');});content='<ul>'+"\n"+itemsList.join('')+'</ul>'+"\n";}
itemContent='<div class="Dynalicious DynaScroll scroll" DynaParams="{\'theme\':null,\'info\':[\'both\',null]}" id="catsList"><div class="DynaContainer">'+content+'</div></div>';container.down('.content').update(itemContent);Dynalicious.reload(container);if(focusIndex>-1){selectCat(focusIndex);}
pe.stop();}},.1);}
function listVids(){var focusID=vidID;var focusIndex=-1;getVids();new PeriodicalExecuter(function(pe){if(ajaxIdle('getVids')){var container=$('vids');var content='';var items=VIDS;if(items.length>0){var itemsList=[];items.each(function(item,i){if(focusID==item.id){focusIndex=i;}
itemsList.push('<li>'+item.title+'</li>');});content='<ul>'+"\n"+itemsList.join('')+'</ul>'+"\n";}
itemContent='<div class="Dynalicious DynaScroll scroll" DynaParams="{\'theme\':null,\'info\':[\'both\',null]}" id="catsList"><div class="DynaContainer">'+content+'</div></div>';container.down('.content').update(itemContent);Dynalicious.reload(container);if(focusIndex>-1){selectVid(focusIndex);}
pe.stop();}},.1);}
function selectLang(i){$('langs').down('div.content').down('li',i).addClassName('focus');listCats();}
function selectCat(i){$('cats').down('div.content').down('li',i).addClassName('focus');listVids();}
function selectVid(i){$('vids').down('div.content').down('li',i).addClassName('focus');revealVid(i);}
function revealVid(i){var container=$('vid');var VID=VIDS[i];var content='';content='<div class="vidPlayer"> \
 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="320" height="265" id="Flexco_videoPlayer" align="middle"> \
 <param name="allowScriptAccess" value="sameDomain" /> \
 <param name="allowFullScreen" value="true" /> \
 <param name="movie" value="'+Dynalicious.httpBase+'mediabase/Flexco_videoPlayer.swf" /> \
 <param name="flashvars" value="myURL='+VID.pathPlay+'" /> \
 <param name="quality" value="high" /> \
 <param name="bgcolor" value="#000000" /> \
 <param name=wmode value="transparent">\
 <embed src="'+Dynalicious.httpBase+'mediabase/Flexco_videoPlayer.swf" flashvars="myURL='+VID.pathPlay+'" wmode="transparent" quality="high" bgcolor="#000000" width="320" height="265" name="Flexco_videoPlayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> \
 \
 </object> \
 </div>';content+='<div class="vidInfo"><h3>'+VID.title+'</h3><p>'+VID.description+'</p></div>';container.down('.content').update(content);container.show();Dynalicious.reload(container);}
function checkTarget(target_el){var tmp_el=undefined;if(target_el.tagName!='LI'){tmp_el=target_el.up('li',0);}
return(tmp_el!==undefined)?tmp_el:target_el;}
function overEvent(event){var target_el=checkTarget(event.element());if(target_el.tagName=='LI'){target_el.addClassName('hover');}}
function outEvent(event){var target_el=checkTarget(event.element());var related_el=event.relatedTarget||event.toElement;while(related_el!=target_el&&related_el.nodeName!='BODY'&&related_el.nodeName!='HTML'){related_el=related_el.parentNode;}
if(related_el==target_el)return;if(target_el.tagName=='LI'){target_el.removeClassName('hover');}}
function upEvent(event){var target_el=checkTarget(event.element());var target_index=-1;var sect=target_el.up('div.sect').identify();var opts=(target_el.up('div.options')!==undefined)?true:false;switch(target_el.tagName){case'LI':if(!target_el.hasClassName('focus')&&target_el.up('ul.arrows')===undefined){target_index=getElIndex(target_el,'LI');if(!opts){var currFocus=target_el.up('div.sect').down('li.focus');if(currFocus!==undefined){currFocus.removeClassName('focus');}
target_el.addClassName('focus');}
switch(sect){case'langs':langID=getSelected('langs').id;catID=0;$('cats').down('div.content').update();vidID=0;$('vids').down('div.content').update();$('vid').down('div.content').update();$('vid').hide();listCats();break;case'cats':catID=getSelected('cats').id;vidID=0;$('vids').down('div.content').update();$('vids').show();$('vid').down('div.content').update();$('vid').hide();listVids();break;case'vids':vidID=getSelected('vids').id;revealVid(target_index);break;case'vid':if(opts){if(target_el.hasClassName('downloadVid')){window.location=getSelected('vids').pathDownload;}else if(target_el.hasClassName('shareVid')){openShareForm();}}
break;}}
break;}}
function openShareForm(){var shareForm='<div class="form" id="shareVidForm">\
  <div class="formMsg" style="display:none;"><div class="formMsgBody"></div><a href="javascript:VidLib.hideFormMsg(\'shareVidForm\');" class="formMsgClose">close</a></div>\
  <div class="formBody">\
  <form>\
  <fieldset>\
  <label id="shareFromName_label" for="shareFromName">Your Name</label><input type="text" class="text req" value="" id="shareFromName" name="shareFromName" />\
  <label id="shareFromEmail_label" for="shareFromEmail">Your Email</label><input type="text" class="text req" value="" id="shareFromEmail" name="shareFromEmail" />\
  <label id="shareToEmail_label" for="shareToEmail">Share Email(s)</label><span class="fieldDescript">Separated by commas</span><textarea class="req" id="shareToEmail" name="shareToEmail"></textarea>\
  </fieldset>\
  </form>\
  <div class="buttons"><ul><li onclick="VidLib.shareVid();">share</li><li onclick="VidLib.closeWin();">cancel</li></ul></div>\
  </div>\
  </div>';Dynalicious.openOverlayWin(shareForm,{'closeWin':false,'w':'300px','h':'230px'});}
function checkForm(id){function isEmpty(val){var testExp=/^\w+/i;return(testExp.test(val))?false:true;}
var resp={};resp.errors=[];var formEl=($(id).tagName=='FORM')?$(id):$(id).down('form');formEl.select('.req').each(function(el,i){if(el.hasClassName('req')){var elLbl=$(el.id+'_label').innerHTML;switch(el.tagName){case'INPUT':switch(el.type){case'text':if(isEmpty(el.value)){resp.errors.push(elLbl+' was left empty.');}
break;case'radio':break;case'checkbox':break;}
break;case'SELECT':if(el.value==''){resp.errors.push(elLbl+' was left empty.');}
break;case'TEXTAREA':if(isEmpty(el.value)){resp.errors.push(elLbl+' was left empty.');}
break;}}});resp.pass=(resp.errors.length>0)?false:true;if(!resp.pass){resp.parseErrors=function(){var errs='';this.errors.each(function(err){errs+='<li>'+err+'</li>';});return'<h2>The following errors were detected:</h2><ol>'+errs+'</ol>';}}else{resp.JSON=formEl.serialize(true);}
return resp;}
var pub={init:function(params){el=params.el||window.document.getElementsByTagName("body").item(0);langID=params.langID||0;catID=params.catID||0;vidID=params.vidID||0;if(catID<1){vidID=0;}
Dynalicious.include(cssFile,this.load);},load:function(){var stdOut='<div class="row" id="browse">\
    <div class="col sect" id="langs"><h2 class="title">Browse Languages:</h2><div class="content"></div><div class="options"></div></div>\
    <div class="col sect" id="cats"><h2 class="title">Browse Categories:</h2><div class="content"></div><div class="options"></div></div>\
    <div class="col sect" id="vids"><h2 class="title">Browse Videos:</h2><div class="content"></div><div class="options"></div></div>\
   </div>\
   <div class="sect" id="vid" style="display:none;"><h2 class="title">Now Playing:</h2><div class="content"></div><div class="options"><ul><li class="shareVid">Share this video</li><li class="downloadVid">Download this video</li></ul></div></div>';$(el).insert({'top':stdOut});Event.observe(el,"mouseout",outEvent.bindAsEventListener(SELF));Event.observe(el,"mouseover",overEvent.bindAsEventListener(SELF));Event.observe(el,"mouseup",upEvent.bindAsEventListener(SELF));listLangs();},closeWin:function(){Dynalicious.closeOverlayWin();},showFormMsg:function(id,msg){$(id).down('.formMsgBody').update(msg);Effect.BlindDown($(id).down('.formMsg'),{duration:.2});},hideFormMsg:function(id){Effect.BlindUp($(id).down('.formMsg'),{duration:.2});$(id).down('.formMsgBody').update();},shareVid:function(){var formContainEl=$('shareVidForm');formContainEl.down('.formMsgBody').update();var formCheck=checkForm('shareVidForm');if(!formCheck.pass){var formErrors=formCheck.parseErrors();this.showFormMsg('shareVidForm',formErrors);}else{var formFields=formContainEl.down('.formBody').innerHTML;formContainEl.down('.formBody').update('Sending ...');var ajaxParams=formCheck.JSON;ajaxParams.cmd='shareVid';var currURL=window.location.href;var qMrkIndex=currURL.lastIndexOf('?');var retURL=(qMrkIndex>-1)?currURL+'&':currURL+'?';ajaxParams.catURL=retURL+'catID='+getSelected('cats').id+'&vidID='+getSelected('vids').id+'&langID='+getSelected('langs').id;var ajaxOpts={method:'post',parameters:ajaxParams,onSuccess:function(resp){formContainEl.down('.formBody').update('<p>Video has been shared.</p><div class="buttons"><ul><li onclick="VidLib.closeWin();">close</li></ul></div>');}}
new Ajax.Request(ajaxFile,ajaxOpts);}}}
return pub;}();

