/*
CMS Tools
Copyright 2007-2009 DreamDolphin Media, LLC
*/

function openColorPicker(id,color,type){if(type){type+='/';}
if(!color){var color='FF0000';}
loading();url='/tools/colorpicker_ajax/modal/'+id+'/'+color+'/'+type;new Ajax.Request(url);}
function checkHexColor(color){if(color.length==3||color.length==6){var strPattern=/^[0-9a-f]{3,6}$/i;var result=strPattern.test(color);return result;}
else{return false;}}
function updatePreview(name,color){color.toLowerCase();if($(name)&&checkHexColor(color)){$(name).style.background='#'+color;}}
function clickColor(color){color.toLowerCase();$('colorpicker_color').value=color;updatePreview('modal-preview',color);}
function submitColor(name){var color=$F('colorpicker_color').toLowerCase();if(checkHexColor(color)){$(name).value=color;updatePreview(name+'-colorbox',color);Control.Modal.close();}}
function rating_select(event,field_name,no_set){var pos=getRelativeCoordinates(event,document.getElementById("rating_control_"+field_name));var pos_x=pos.x;var rating_code='0';var item_max_x=0;var items_width=0;var spacing_extra=0;var rating_options=[];var rating=0;for(i=0.5;i<=5;i+=0.5){items_width=rating_control_width*i;item_max_x=items_width+spacing_extra;if(pos_x<=item_max_x){rating=i;break;}
spacing_extra=Math.floor(i)*rating_control_spacing;}
var rating_img=rating_image(rating);document.getElementById('rating_control_'+field_name).style.background="url('"+rating_img+"')";document.getElementById('rating_value_'+field_name).innerHTML=rating;document.getElementById('rating_description_'+field_name).innerHTML=rating_description(rating);if(!no_set){document.getElementById('rating_'+field_name).value=rating;}
rating_set_not_rated(rating,field_name);}
function rating_image(rating){rating=rating.toString();var rating_code=rating.replace(/\./,'_');var rating_img=rating_control_img_dir+'rating_'+rating_code+'.png';return rating_img;}
function rating_description(rating){var descs=[];descs[0]='<img src="'+rating_control_img_dir+'/arrow_left.png" width="16" height="16" alt="Click to Rate" border="0" class="rating_arrow" />Click to Rate';descs[0.5]='Terrible';descs[1]='Very Poor';descs[1.5]='Poor';descs[2]='Below Average';descs[2.5]='Mediocre';descs[3]='Good';descs[3.5]='Great';descs[4]='Excellent';descs[4.5]='Near Perfect';descs[5]='Perfect';var desc=descs[0];for(i=0.5;i<=5;i+=0.5){if(rating<=i&&rating>(i-0.5)){desc=descs[i];if(i>0){desc='"'+desc+'"';}
break;}}
return desc;}
function rating_reset(field_name){var rating=document.getElementById('rating_'+field_name).value;var rating_img=rating_image(rating);document.getElementById('rating_control_'+field_name).style.background="url('"+rating_img+"')";document.getElementById('rating_value_'+field_name).innerHTML=rating;document.getElementById('rating_description_'+field_name).innerHTML=rating_description(rating);rating_set_not_rated(rating,field_name);}
function rating_set_not_rated(rating,field_name){display='none';if(rating>0){var display='inline';}
document.getElementById('rating_value_'+field_name).style.display=display;document.getElementById('rating_note_separator_'+field_name).style.display=display;}
function rating_preload_images(){var rating_images=[];for(i=0;i<=5;i+=0.5){var img=rating_image(i);rating_images[i]=new Image();rating_images[i].src=rating_image(i);}}
rating_preload_images();

/*
DatePicker widget using Prototype and Scriptaculous
(c) 2007 Mathieu Jondet <mathieu@eulerian.com>
Eulerian Technologies

DatePicker is freely distributable under the same terms as Prototype.

DatePickerFormatter class for matching and stringifying dates.
By Arturas Slajus <x11@arturaz.net>
*/

var DatePickerFormatter=Class.create();DatePickerFormatter.prototype={initialize:function(format,separator){if(typeof(format)=="undefined"){format=["yyyy","mm","dd"]}
if(typeof(separator)=="undefined"){separator="-"}
this._format=format;this.separator=separator;this._format_year_index=format.indexOf("yyyy");this._format_month_index=format.indexOf("mm");this._format_day_index=format.indexOf("dd");this._year_regexp=/^\d{4}$/;this._month_regexp=/^0\d|1[012]|\d$/;this._day_regexp=/^0\d|[12]\d|3[01]|\d$/;},match:function(str){d=str.split(this.separator);if(d.length<3){return false;}
year=d[this._format_year_index].match(this._year_regexp);if(year){year=year[0]}else{return false}
month=d[this._format_month_index].match(this._month_regexp);if(month){month=month[0]}else{return false}
day=d[this._format_day_index].match(this._day_regexp);if(day){day=day[0]}else{return false}
return[year,month,day];},current_date:function(){var d=new Date;return this.date_to_string(d.getFullYear(),d.getMonth()+1,d.getDay());},date_to_string:function(year,month,day,separator){if(typeof(separator)=="undefined"){separator=this.separator}
var a=[0,0,0];a[this._format_year_index]=year;a[this._format_month_index]=this.leftpad_with_zeroes(month,2);a[this._format_day_index]=this.leftpad_with_zeroes(day,2);return a.join(separator);},leftpad_with_zeroes:function(str,padToLength){var result='';for(var i=0;i<(padToLength-String(str).length);i++)
result+='0';return result+str;}};var DatePicker=Class.create();DatePicker.prototype={Version:'0.9.3',_relative:null,_div:null,_zindex:1,_keepFieldEmpty:true,_daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],_language:'en',_language_month:$H({'en':['January','February','March','April','May','June','July','August','September','October','November','December'],'en_gb':['January','February','March','April','May','June','July','August','September','October','November','December']}),_language_day:$H({'en':['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],'en_gb':['Mon','Tue','Wed','Thu','Fri','Sat','Sun']}),_language_close:$H({'en':'close','en_gb':'close'}),_language_date_format:$H({'en':[["mm","dd","yyyy"],"/"],'en_gb':[["dd","mm","yyyy"],"/"]}),_todayDate:new Date(),_current_date:null,_clickCallback:Prototype.emptyFunction,_cellCallback:Prototype.emptyFunction,_id_datepicker:null,_topOffset:26,_leftOffset:0,_isPositionned:false,_relativePosition:true,_setPositionTop:0,_setPositionLeft:0,_showEffect:"appear",_showDuration:1,_enableShowEffect:true,_closeEffect:"fade",_closeEffectDuration:0.3,_enableCloseEffect:true,_afterClose:Prototype.emptyFunction,getMonthLocale:function(month){return this._language_month.get(this._language)[month];},getLocaleClose:function(){return this._language_close.get(this._language);},_initCurrentDate:function(){this._df=new DatePickerFormatter(this._language_date_format.get(this._language)[0],this._language_date_format.get(this._language)[1]);this._current_date=$F(this._relative);if(!this._df.match(this._current_date)){this._current_date=this._df.current_date();if(!this._keepFieldEmpty)
$(this._relative).value=this._current_date;}
var a_date=this._df.match(this._current_date);this._current_year=Number(a_date[0]);this._current_mon=Number(a_date[1])-1;this._current_day=Number(a_date[2]);},initialize:function(h_p){this._relative=h_p["relative"];if(h_p["language"])
this._language=h_p["language"];this._zindex=(h_p["zindex"])?parseInt(Number(h_p["zindex"])):1;if(!Object.isUndefined(h_p["keepFieldEmpty"]))
this._keepFieldEmpty=h_p["keepFieldEmpty"];if(Object.isFunction(h_p["clickCallback"]))
this._clickCallback=h_p["clickCallback"];if(!Object.isUndefined(h_p["leftOffset"]))
this._leftOffset=parseInt(h_p["leftOffset"]);if(!Object.isUndefined(h_p["topOffset"]))
this._topOffset=parseInt(h_p["topOffset"]);if(!Object.isUndefined(h_p["relativePosition"]))
this._relativePosition=h_p["relativePosition"];if(!Object.isUndefined(h_p["showEffect"]))
this._showEffect=h_p["showEffect"];if(!Object.isUndefined(h_p["enableShowEffect"]))
this._enableShowEffect=h_p["enableShowEffect"];if(!Object.isUndefined(h_p["showDuration"]))
this._showDuration=h_p["showDuration"];if(!Object.isUndefined(h_p["closeEffect"]))
this._closeEffect=h_p["closeEffect"];if(!Object.isUndefined(h_p["enableCloseEffect"]))
this._enableCloseEffect=h_p["enableCloseEffect"];if(!Object.isUndefined(h_p["closeEffectDuration"]))
this._closeEffectDuration=h_p["closeEffectDuration"];if(Object.isFunction(h_p["afterClose"]))
this._afterClose=h_p["afterClose"];if(!Object.isUndefined(h_p["externalControl"]))
this._externalControl=h_p["externalControl"];if(Object.isFunction(h_p["cellCallback"]))
this._cellCallback=h_p["cellCallback"];this._setPositionTop=(h_p["setPositionTop"])?parseInt(Number(h_p["setPositionTop"])):0;this._setPositionLeft=(h_p["setPositionLeft"])?parseInt(Number(h_p["setPositionLeft"])):0;this._id_datepicker='datepicker-'+this._relative;this._id_datepicker_prev=this._id_datepicker+'-prev';this._id_datepicker_next=this._id_datepicker+'-next';this._id_datepicker_hdr=this._id_datepicker+'-header';this._id_datepicker_ftr=this._id_datepicker+'-footer';this._div=Builder.node('div',{id:this._id_datepicker,className:'datepicker',style:'display: none; z-index: '+this._zindex},[Builder.node('div',{className:'datepicker-header'},[Builder.node('span',{id:this._id_datepicker_prev,style:'cursor: pointer;'},' << '),Builder.node('span',{id:this._id_datepicker_hdr}),Builder.node('span',{id:this._id_datepicker_next,style:'cursor: pointer;'},' >> ')]),Builder.node('div',{className:'datepicker-calendar'},[Builder.node('table',{id:this._id_datepicker+'-table'})]),Builder.node('div',{id:this._id_datepicker_ftr,className:'datepicker-footer'})]);Event.observe(this._relative,'click',this.click.bindAsEventListener(this),false);document.observe('dom:loaded',this.load.bindAsEventListener(this),false);},load:function(){if(this._externalControl)
Event.observe(this._externalControl,'click',this.click.bindAsEventListener(this),false);if(this._relativePosition){if($(this._relative).parentNode)
$(this._relative).parentNode.appendChild(this._div);}else{var body=document.getElementsByTagName("body").item(0);if(body)
body.appendChild(this._div);if(this._setPositionTop||this._setPositionLeft)
this.setPosition(this._setPositionTop,this._setPositionLeft);}
this._initCurrentDate();$(this._id_datepicker_ftr).innerHTML=this.getLocaleClose();Event.observe($(this._id_datepicker_prev),'click',this.prevMonth.bindAsEventListener(this),false);Event.observe($(this._id_datepicker_next),'click',this.nextMonth.bindAsEventListener(this),false);Event.observe($(this._id_datepicker_ftr),'click',this.close.bindAsEventListener(this),false);},visible:function(){return $(this._id_datepicker).visible();},click:function(){if(!this._isPositionned&&this._relativePosition){var a_lt=Position.positionedOffset($(this._relative));$(this._id_datepicker).setStyle({'left':Number(a_lt[0]+this._leftOffset)+'px','top':Number(a_lt[1]+this._topOffset)+'px'});this._isPositionned=true;}
if(!this.visible()){this._initCurrentDate();this._redrawCalendar();}
eval(this._clickCallback());if(this._enableShowEffect){new Effect.toggle(this._id_datepicker,this._showEffect,{duration:this._showDuration});}else{$(this._id_datepicker).show();}},close:function(){if(this._enableCloseEffect){switch(this._closeEffect){case'puff':new Effect.Puff(this._id_datepicker,{duration:this._closeEffectDuration});break;case'blindUp':new Effect.BlindUp(this._id_datepicker,{duration:this._closeEffectDuration});break;case'dropOut':new Effect.DropOut(this._id_datepicker,{duration:this._closeEffectDuration});break;case'switchOff':new Effect.SwitchOff(this._id_datepicker,{duration:this._closeEffectDuration});break;case'squish':new Effect.Squish(this._id_datepicker,{duration:this._closeEffectDuration});break;case'fold':new Effect.Fold(this._id_datepicker,{duration:this._closeEffectDuration});break;case'shrink':new Effect.Shrink(this._id_datepicker,{duration:this._closeEffectDuration});break;default:new Effect.Fade(this._id_datepicker,{duration:this._closeEffectDuration});break;};}else{$(this._id_datepicker).hide();}
eval(this._afterClose());},setPosition:function(t,l){var h_pos={'top':'0px','left':'0px'};if(typeof(t)!='undefined')
h_pos['top']=Number(t)+this._topOffset+'px';if(typeof(l)!='undefined')
h_pos['left']=Number(l)+this._leftOffset+'px';$(this._id_datepicker).setStyle(h_pos);this._isPositionned=true;},_leftpad_zero:function(str,padToLength){var result='';for(var i=0;i<(padToLength-String(str).length);i++)
result+='0';return result+str;},_getMonthDays:function(year,month){if(((0==(year%4))&&((0!=(year%100))||(0==(year%400))))&&(month==1))
return 29;return this._daysInMonth[month];},_buildCalendar:function(){var _self=this;var tbody=document.createElement('tbody');var trDay=document.createElement('tr');this._language_day.get(this._language).each(function(item){var td=document.createElement('td');td.innerHTML=item;td.className='wday';trDay.appendChild(td);});tbody.appendChild(trDay);var a_d=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];var d=new Date(this._current_year,this._current_mon,1,12);var startIndex=(!d.getDay())?6:d.getDay()-1;var nbDaysInMonth=this._getMonthDays(this._current_year,this._current_mon);var daysIndex=1;for(var j=startIndex;j<7;j++){a_d[0][j]={d:daysIndex,m:this._current_mon,y:this._current_year};daysIndex++;}
var a_prevMY=this._prevMonthYear();var nbDaysInMonthPrev=this._getMonthDays(a_prevMY[1],a_prevMY[0]);for(var j=0;j<startIndex;j++){a_d[0][j]={d:Number(nbDaysInMonthPrev-startIndex+j+1),m:Number(a_prevMY[0]),y:a_prevMY[1],c:'outbound'};}
var switchNextMonth=false;var currentMonth=this._current_mon;var currentYear=this._current_year;for(var i=1;i<6;i++){for(var j=0;j<7;j++){a_d[i][j]={d:daysIndex,m:currentMonth,y:currentYear,c:(switchNextMonth)?'outbound':(((daysIndex==this._todayDate.getDate())&&(this._current_mon==this._todayDate.getMonth())&&(this._current_year==this._todayDate.getFullYear()))?'today':null)};daysIndex++;if(daysIndex>nbDaysInMonth){daysIndex=1;switchNextMonth=true;if(this._current_mon+1>11){currentMonth=0;currentYear+=1;}else{currentMonth+=1;}}}}
for(var i=0;i<6;i++){var tr=document.createElement('tr');for(var j=0;j<7;j++){var h_ij=a_d[i][j];var td=document.createElement('td');var id=$A([this._relative,this._df.date_to_string(h_ij["y"],h_ij["m"]+1,h_ij["d"],'-')]).join('-');td.setAttribute('id',id);if(h_ij["c"])
td.className=h_ij["c"];td.onclick=function(){$(_self._relative).value=String($(this).readAttribute('id')).replace(_self._relative+'-','').replace(/-/g,_self._df.separator);if(_self._cellCallback)
_self._cellCallback(this);_self.close();};td.innerHTML=h_ij["d"];tr.appendChild(td);}
tbody.appendChild(tr);}
return tbody;},_nextMonthYear:function(){var c_mon=this._current_mon;var c_year=this._current_year;if(c_mon+1>11){c_mon=0;c_year+=1;}else{c_mon+=1;}
return[c_mon,c_year];},nextMonth:function(){var a_next=this._nextMonthYear();this._current_mon=a_next[0];this._current_year=a_next[1];this._redrawCalendar();},_prevMonthYear:function(){var c_mon=this._current_mon;var c_year=this._current_year;if(c_mon-1<0){c_mon=11;c_year-=1;}else{c_mon-=1;}
return[c_mon,c_year];},prevMonth:function(){var a_prev=this._prevMonthYear();this._current_mon=a_prev[0];this._current_year=a_prev[1];this._redrawCalendar();},_redrawCalendar:function(){this._setLocaleHdr();var table=$(this._id_datepicker+'-table');try{while(table.hasChildNodes())
table.removeChild(table.childNodes[0]);}catch(e){};table.appendChild(this._buildCalendar());},_setLocaleHdr:function(){var a_next=this._nextMonthYear();$(this._id_datepicker_next).setAttribute('title',this.getMonthLocale(a_next[0])+' '+a_next[1]);var a_prev=this._prevMonthYear();$(this._id_datepicker_prev).setAttribute('title',this.getMonthLocale(a_prev[0])+' '+a_prev[1]);$(this._id_datepicker_hdr).update('&nbsp;&nbsp;&nbsp;'+this.getMonthLocale(this._current_mon)+'&nbsp;'+this._current_year+'&nbsp;&nbsp;&nbsp;');}};
