function moptipAll(s){
    var size = (typeof s == "number") ? s : 300;
    $('.moptip').each(function(){
        $(this).mopTip({
            'w':size,
            'style':"overOut",
            'get':$(this).attr('data-moptip')
        });
    });
}
function replaceAF(url){
    location.href = url;
    return false;
}
function faceboxHide(){
    $('#facebox').hide();
    $('#facebox_overlay').remove();
}
function postto(f,to,cb){
    var e = to;
    $.post(f.action,$(f).serialize(),function(res){
        $(e).html(res);
        if(cb) cb();
    });
    return false;
}

function modeInit(){
    _modeFlag['edit'] = false;
    _modeFlag['delete'] = false;
    $('.data a.edit').hide();
    $('.data a.delete').hide();
}
// edit mode
var _modeFlag = {
    'edit':false,
    'delete':false
};
function modeSwitch(m){
    var o = (m == 'edit') ? 'delete' : 'edit';
    $('.data a.'+o).hide();
    if(_modeFlag[m] == false){
        $('.data').each(function(){
            var id = $(this).attr("data-id");
            if(id) $(this).prepend('<a href="#" onclick="modeAction(\''+id+'\',\''+m+'\')" class="button img '+m+'"><img src="http://mb.s.neo-hd.co.jp/global/icons/'+m+'.png" alt="'+m+'" /></a>')
        });
        _modeFlag[m] = true;
    }else{
        $('.data a.'+m).toggle();
    }
}
var _modeTabSort = false;
function modeSortEnable(){
    $('#tabs').addClass('sort');
    $('#tabs ul').sortable();
    $('#tabs li').each(function(){
        var t = $(this).children('a').text();
        $(this).prepend('<b class="sup" onclick="addHomeTabExe(\''+t+'\',\'remove\');"><img src="http://mb.s.neo-hd.co.jp/global/icons/delete.png" alt="remove this tag" /></b>');
    });
    _modeTabSort = true;
}
function modeSortDisable(a){
    $('#tabs').removeClass('sort');
    $('#tabs ul').sortable('disable');
    $('#tabs b').remove();
    _modeTabSort = false;
    if(a){
        var v = '';
        $('#tabs a[rel=ajax]').each(function(){
            v += '\n'+$(this).text();
        });
        $.post("/account/exe",{
            'sort':v,
            'exe':'sort'
        },function(res){
            showResult('everything',null,res);
        },"json");
    }
}
function modeAction(id,m){
    switch(m){
        case "edit":
            $.facebox({
                ajax:'/account/edit?id='+id
            });
            break;
        case "delete":
            $('#delete_id').val(id);
            $.facebox({
                div:'#deletetpl'
            });
            break;
        case "tab":
            if(_modeTabSort == false){
                modeSortEnable();
            }else{
                modeSortDisable(true);
            }
            break;
    }
}
// edit mode
function modeEditSubmit(f){
    $.post(f.action,$(f).serialize(),function(res){
        if(res.result == 'ok'){
            reloadPage(moptipAll);
            window.scroll(0,0);
        }
        faceboxHide();
        showResult("everything",null,res);
        _modeFlag['edit'] = false;
    },"json");
    return false;
}
/// delete
function modeDeleteSubmit(f){
    $.post(f.action,$(f).serialize(),function(res){
        faceboxHide();
        if(res.result == 'ok'){
            $('#data'+res.id).fadeOut();
        }
        showResult("everything",null,res);
    },"json");
    return false;
}
function checkTabExists(t){
    var e = false;
    $('#tabs a[rel=ajax]').each(function(){
        if($(this).text() == t) e = this;
    });
    return e;
}
function add2Tab(t){
    var e = checkTabExists(t);
    if(!e){
        var i = '<li><a href="/home?tag='+urlencode(t)+'" class="tab" rel="ajax" onclick="return getPageHome(this.href)">'+escapeHTML(t)+'</a></li>';
        $('#tabs ul').append(i);
        addHomeTabExe(t,'add');
    }else{
        $(e).css("background-color","#ffc0cb").animate({
            "background-color":"#F7F7F7"
        },1000);
    }
    return false;
}
function addHomeTab(){
    alert("open tag search");
}
function addHomeTabExe(tag,act){
    if(act == "remove"){
        if(confirm("Are you sure you remove this tag?") == false) return false;
    }
    $.post("/account/exe",{
        'tag':tag,
        'exe':'tab',
        'action':act
    },function(res){
        if(res.key == 'add_ok'){
            
        }else if(res.key == 'remove_ok'){
            $('#tabs .tab').each(function(){
                if($(this).text() == res.tag){
                    $(this).parent().remove();
                }
            });
        }
        showResult("everything",null,res);
        faceboxHide();
        window.scroll(0,0);
    },"json");
    return false;
}
function addServiceUrl(f){
    $.post("/register/exe",$(f).serialize(),function(res){
        if(res.key == 'add_ok'){
            $('section.urls table').append('<tr><th>'+escapeHTML(res.title)+'</th><td><a href="'+res.url+'">'+escapeHTML(res.url)+'</a></td></tr>');
        }
        showResult("everything",null,res);
        faceboxHide();
    },"json");
    return false;
}
function followExe(f){
    $.post(f.action,$(f).serialize(),function(res){
        showResult("everything",null,res);
        faceboxHide();
    },"json");
    return false;
}
function unfollowUser(f){
    var r = confirm("Are you sure?");
    if(r){
        $.post(f.action,$(f).serialize(),function(res){
            if(res.result == 'ok') $('#data_'+res.id).fadeOut();
            showResult("everything",null,res);
            faceboxHide();
        },"json");
    }
    return false;
}
// add tag on register
var _tag_l = "";
function suggestTagEvent(id,to,time,func){
    var v = $(id).val();
    if(_tag_l != v) suggestTag(v,to,func);
    _tag_l = v;
    _tag_eo = setTimeout(function(){
        suggestTagEvent(id,to,time,func);
    },time);
}
function suggestTagEventStop(){
    clearTimeout(_tag_eo);
}
function setTag1(e){
    var t = $('a.tag-rc',$(e).parent()).text();
    if($('#tag-added li').length == 3){
        alert("Only 3 tags can be added\nRemove one to add new tag");
    }else{
        $('#tag-added ul').append('<li style="display:inline"><a href="#" class="tag-rc" onclick="return removeTag(this)" title="click to remove">'+escapeHTML(t)+'</a><input type="hidden" name="tag[]" value="'+escapeHTML(t)+'" /></li>');
        $(e).parent().remove();
    }
    return false;
}
function setTag2(e){
    var t = $('a.tag-rc',$(e).parent()).text();
    $('#facebox #value_tag_q').val(t);
    $('#facebox .taglist').slideUp();
    suggestTagEventStop();
    return false;
}
function removeTag(e){
    var t = $('a.tag-rc',$(e).parent()).text();
    $(e).parent().remove();
    return false;
}
function resetTag(){
    $('#tag-here').slideUp();
    $('#value_tag_q').val("");
    return false;
}
// add in service page
function addTag(f){
    $.post(f.action,$(f).serialize(),function(res){
        if(res.key == 'add_ok'){
            location.href = location;
        }else{
            $('#facebox #addtag .body').text(res.message);
        }
    },"json");
    return false;
}
function voteTag(sid,tid,v,e){
    $(e).parent().text(" thanks!");
    $.post("/register/exe",{
        'exe':'votetag',
        'sid':sid,
        'tid':tid,
        'vote':v
    });
    return false;
}
function searchTag(to,tag){
    $(to).load("/tag/?q="+$(tag).val());
    return false;
}
function suggestTag(v,to,func1){
    if(func1) func1 = ' <a href="#" onclick="return '+func1+'(this)" title="click to add">add</a>';
    if(v.length >= 3){
        $.get("/api",{
            'type':'gettag',
            'q':v
        },function(res){
            var rc = '<ul class="list">';
            if(res != null){
                for(var i=0;i<res.length;i++){
                    var t = res[i].tag;
                    rc += '<li><a href="/tag/'+urlencode(t)+'/" class="tag-rc" target="_blank" title="check nets in this tag">'+escapeHTML(t)+'</a>'+func1+'</li>';
                }
            }
            rc += '<li><a href="/tag/'+urlencode(v)+'/" class="tag-rc" target="_blank" title="check nets in this tag">'+escapeHTML(v)+'</a>'+func1+'</li>';
            rc += '</ul>';
            $(to).html(rc).slideDown();
        },"json");
    }else{
        $(to).text("");
    }
    return false;
}
function replyCommentTo(id,user){
    document.getElementById('replyto').innerHTML = ' - <a href="#" title="click to cancel" onclick="return cancelReply()">Reply to '+escape(user)+'</a>';
    document.getElementById('value_replyto').value = id;
    return true;
}
function cancelReply(){
    document.getElementById('replyto').innerHTML = '';
    document.getElementById('value_replyto').value = "";
    return false;
}
function showFeedbackComments(sid,id,e){
    if(e) $(e).remove();
    var el = $('#t'+id+' .comments');
    if($(el).hasClass('unloaded') == false) return false;
    $(el).load("/service/"+sid+"/feedback/comments/"+id).removeClass("unloaded");
    return false;
}
function postFeedbackComment(f){
    $.post(f.action,$(f).serialize(),function(res){
        if(res.result == 'ok'){
            getPage("comments"+res.fid,"/service/"+res.sid+"/feedback/comments/"+res.fid+"?f=no");
            $('#value_comment'+res.fid).val("");
        }else{
            showResult("everything",null,res);
        }
    },"json");
    return false;
}
function voteFeedback(sid,id,e){
    var te = e;
    if($(te).attr("data-voted") == 1) return false;
    $.post('/service/'+sid+'/feedback/exe',{'id':id,'exe':'vote'},function(res){
        if(res.result == 'ok'){
            $(te).addClass("voted").attr("data-voted",1);
            num = $('#t'+res.id+" .rate span").text();
            var num = num-0+1;
            $('#t'+res.id+" .rate span").text(num).addClass("plus");
        }else{
            showResult("everything",null,res);
        }
    },"json");
    return false;
}
function checkAdminUser(e){
    var val = e.value;
    val = val.replace(/[^a-zA-Z0-9_]/g,'');
    var m = (val == '') ? '' : 'Are you sure that you want <a href="/user/'+val+'/" class="user" target="_blank">'+val+'</a> to be an admin?';
    $('#domain-admin-form p').html(m);
    return false;
}

/* ----------------- elements ---------------------------- */
function debug(v){
    console.log(v);
}
function addEvent(elm, type, event){
    if(elm.addEventListener) {
        elm.addEventListener(type, event, false);
    } else if(elm.attachEvent) {
        elm.attachEvent('on'+type, event);
    } else {
        elm['on'+type] = event;
    }
    return false;
}
// load dynamic
function is_loaded(path,tag){
    if(tag == null) var tag = 'script';
    var o = document.getElementsByTagName(tag);
    var r = false;
    for(var i=0;i<o.length;i++){
        if(o[i].src==path || o[i].href==path) r = true;
    }
    return r;
}
function load_js(path,func,time){
    var l = is_loaded(path);
    if(l == false){
        var s=document.createElement('script');
        s.charset='UTF-8';
        s.src=path;
        document.body.appendChild(s);
        if(func != null && time != null) setTimeout(func,time);
    }
    return false;
}
function load_css(path){
    var r = is_loaded(path,"link");
    if(r == false){
        if(document.all)
            document.createStyleSheet(path);
        else if(document.styleSheets){
            var l=document.createElement('link');
            l.rel="StyleSheet";
            l.type="text/css";
            l.href=path;
            var h=document.getElementsByTagName('head').item(0);
            h.appendChild(l);
        }
    }
    return false;
}
var _lastGetPage = new Object;
function getPage(id,url,func,ttp){
    $('#'+id).load(url,func);
    _lastGetPage = {
        'id':id,
        'url':url
    };
    if(typeof pageTracker != "undefined"){
        var u = url.replace("http://meltbox.com/",'');
        pageTracker._trackPageview(u);
    }
    if(ttp) window.scroll(0,$('#'+id).offset().top);
    return false;
}
function reloadPage(func){
    if(_lastGetPage['id'] != ''){
        getPage(_lastGetPage['id'],_lastGetPage['url'],func);
    }else{
        location.href = location;
    }
}
function url_add_query(url,q){
    if(url.match(/\?/) != null){
        url = url+"&"+q;
    }else{
        url = url+"?"+q;
    }
    return url;
}

// generate unique key
function timestamp(){
    var now = new Date();
    return now.getTime();
}

// add event
function addListener(elem, eventType, func, cap)
{
    if(elem.addEventListener){
        elem.addEventListener(eventType, func, cap);
    }else if(elem.attachEvent){
        elem.attachEvent('on' + eventType, func);
    }
}


// size
function size_get_scroll() {
    var obj = new Object();
    obj.x = document.documentElement.scrollLeft || document.body.scrollLeft;
    obj.y = document.documentElement.scrollTop || document.body.scrollTop;
    return obj;
}
function size_get_window() {
    var obj = new Object();
    obj.x = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth;
    obj.y = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
    obj.mx = parseInt((obj.x)/2);
    obj.my = parseInt((obj.y)/2);
    return obj;
}
function size_get_document(){
    var obj = new Object();
    obj.x = document.body.offsetWidth;
    obj.y = document.body.offsetHeight;
    return obj;
}

/// toggle
function click_open(id,type){
    if(type == "slide"){
        if($('#'+id).css("display") == "none"){
            $('#'+id).slideDown();
        }else{
            $('#'+id).slideUp();
        }
        return false;
    }else if(type == "fade"){
        if($('#'+id).css("display") == "none"){
            $('#'+id).fadeIn();
        }else{
            $('#'+id).fadeOut();
        }
        return false;
    }
    if(document.getElementById(id).style.display == "none"){
        document.getElementById(id).style.display="";
    }else{
        document.getElementById(id).style.display="none";
    }
    return false;
}
function click_blind(id){
    if(document.getElementById(id).style.display == "none"){
        new Effect.BlindDown(id,{
            duration:0.3
        });
    }else{
        new Effect.BlindUp(id,{
            duration:0.3
        });
    }
}

// get element under ID
function getElementBySelector(a,num){
    var e = $$(a);
    if(num != null){
        var b = num.split(",");
        var n = new Array;
        for(var i=0;i<b.length;i++){
            n[i] = e[i];
        }
        return n;
    }else{
        return e[0];
    }
}

// sanitize
function escapeHTML(str,intt){
    if(intt == true){
        str = Number(str);
        if(!isFinite(str)) str = 0;
    }else{
        str = str.replace(/</g,'&lt;');
        str = str.replace(/>/g,'&gt;');
        str = str.replace(/"/g,'&quot;');
        str = str.replace(/\'/g,'&#039;');
    }
    return str;
}
function nl2br(v){
    v = v.replace(/\r\n/g,'<br />');
    v = v.replace(/(\n|\r)/g, '<br />');
    return v;
}

// urlencode
function urlencode(v){
    return encodeURIComponent(v);
}
// get cookie
function getcookie(name) {
    allcookie = document.cookie + ';'
    start1 = allcookie.indexOf(name);
    if (start1 != -1) {
        target = allcookie.substring(start1, allcookie.length);
        start2 = target.indexOf('=', 0) + 1;
        end = target.indexOf(';', start2);
        return(unescape(target.substring(start2, end)));
    }
    return null;
}
// set cookie
function setcookie(name, value,expdays,domain,path) {
    var query = "";
    if(value != null) query += "="+escapeHTML(value);
    if(expdays != null){
        var t = new Date;
        t.setTime(t.getTime() + expdays * 24 * 60 * 60 * 1000);
        query += '; expires=' + t.toGMTString();
    }
    if(domain != null) query += ";domain="+domain;
    if(path != null) query += ";path="+path;
    document.cookie = name + query;
}

function absolutePath(path){
    var e = document.createElement('span');
    e.innerHTML = '<a href="' + path + '" />';
    return e.firstChild.href;
}

// sleep
function Sleep(v){
    var d1 = new Date().getTime();
    var d2 = new Date().getTime();
    while( d2 < d1+1000*v ){
        d2=new Date().getTime();
    }
    return;
}

// result
var _result_event;
function showResult(appendto,html,json){
    if(appendto){
        remove("result");
        remove("result_wrapper");
        clearTimeout(_result_event);
		
        if(json != null){
            var html = '<div id="result" class="'+json['result']+' '+json['key']+'"><div onclick="document.getElementById(\'result\').style.display=\'none\'">'+json['message']+'</div></div>';
        }
		
        var ooo = document.createElement("div");
        ooo.innerHTML = html;
        ooo.id = "result_wrapper";
        document.getElementById(appendto).appendChild(ooo);
    }
	
    setTimeout(function(){
        document.getElementById('result').style.display='none';
    },4000);
}
function hideResult(){
    if(document.getElementById('result') == null) return false;
	
    var b = (document.getElementById('result').style.bottom);
    b = b.substr(0,b.length-2);
    if(b > -90){
        document.getElementById('result').style.bottom = (b-15)+"px";
        _result_event = setTimeout(hideResult,20);
    }else if(b <= -90){
        remove("result");
        remove("result_wrapper");
    }
    return false;
}

// loading
var _loading_event;
function showLoading(){
    var name = "loading";
    if(document.getElementById(name) == null){
        clearTimeout(_loading_event);
		
        var ooo = document.createElement("div");
        ooo.innerHTML = "<span>Loading</span>";
        ooo.id = name;
        ooo.style.right = "-120px";
        document.body.appendChild(ooo);
    }
	
    var b = (document.getElementById(name).style.right);
    b = Number(b.substr(0,b.length-2));
    if(b < 0){
        document.getElementById(name).style.right = (b+15)+"px";
        _loading_event = setTimeout(function(){
            showLoading();
        },10);
    }
}
function hideLoading(){
    if(document.getElementById('loading') == null) return false;
	
    var b = (document.getElementById('loading').style.right);
    b = b.substr(0,b.length-2);
    if(b > -120){
        document.getElementById('loading').style.right = (b-15)+"px";
        _loading_event = setTimeout(hideLoading,10);
    }else if(b == -120){
        remove("loading");
    }
    return false;
}



//count up by id
function CountUpById(id,count){
    if($(id)==null) return false;
    if(count==null) var count = 1;
    var e = document.getElementById(id);
    var ct= Number(e.innerHTML);
    e.innerHTML = ct+count;
    return true;
}
function CountDownById(id,count){
    if($(id)==null) return false;
    if(count==null) var count = 1;
    var e = document.getElementById(id);
    var ct= Number(e.innerHTML);
    var n = (ct<count) ? 0 : (ct-count);
    e.innerHTML = n;
    return true;
}

var submited_el = new Object;
function submited_load(el){
    if(typeof el == 'string') var el = document.getElementById(el);
	
    if(!el) return false;
	
    submited_el['el'] = el;
    submited_el['value'] = el.value;
    el.value = "processing";
    el.disabled = true;
    setClassName(el,"loading","add");
    return true;
}
function submited_back(){
    if(submited_el['el']==null) return false;
	
    var el = submited_el['el'];
    el.value = submited_el['value'];
	
    setClassName(el,"loading","remove");
    el.disabled = false;
    submited_el['el'] = null;
    return false;
}

/// new inline window blank
function open_window(obj){
    close_window();
    var size = size_get_window();
    var position_left,position_top;

    if(obj==null) var obj = new Object;

    if(obj['width'] != null){
        position_left = ((size.x-obj['width'])/2);
    }else{
        position_left = (size.x*0.05);
        obj['width'] = (size.x*0.9);
    }
	
    var scroll_point  = document.body.scrollTop  || document.documentElement.scrollTop;
    if(obj['height'] != null){
        position_top = (size.y-obj['height'])*0.4;
    }else{
        obj['height'] = size.y-60;
        position_top = 30;
    }
	
    if(obj['image'] != null){
        var backsyle = "";
        obj['body'] = '<img src="'+obj['image']+'" alt="" />';
    }
    var a = 'position:fixed;top:'+position_top+'px;';
	
    if(obj['style'] == null) obj['style'] = 1;
    switch(obj['style']){
        case 1:
            obj['classname'] = "window1";
            obj['inner'] = '<table width="100%" cellspacing="0"><tr><td class="tl">&nbsp;</td><td class="tm">&nbsp;</td><td class="tr">&nbsp;</td></tr><tr><td class="ml">&nbsp;</td><td class="mm"><div id="sub_window_body" style="overflow-x:hidden;overflow-y:auto;height:'+(obj['height']-50)+'px;width:99%;"></div><div align="right"><a onclick="return close_window()" href="#">CLOSE</a></div></td><td class="mr">&nbsp;</td></tr><tr><td class="bl">&nbsp;</td><td class="bm">&nbsp;</td><td class="br">&nbsp;</td></tr></table>';
            break;
        case 2:
            obj['close'] = (obj.graybox == null || obj.graybox == false) ? '<a href="#" onclick="return close_window()" class="close">×</a>' : "";
            obj['classname'] = "popup";
            obj['inner'] = '<div style="overflow-x:hidden;overflow-y:auto;"><h4 class="title">'+obj['close']+obj['title']+'</h4><div class="body" id="sub_window_body"></div></div>';
            break;
    }
    var window = '<div class="'+obj['classname']+'" style="'+a+'left:'+position_left+'px;width:'+obj['width']+'px;z-index:10001;height:'+obj['height']+'px;'+backsyle+'">'+obj['inner']+'</div>';
    if(obj.graybox != null && obj.graybox != false) greyback_on('sub_window');
    var el = document.createElement("div");
    el.id = "sub_window";
    el.innerHTML = window;
    document.body.appendChild(el);
	
    if(obj['body'] != null){
        document.getElementById('sub_window_body').innerHTML = obj['body'];
    }else if(obj['id'] != null){
        document.getElementById('sub_window_body').innerHTML = document.getElementById(obj['id']).innerHTML;
    }
	
    return false;
}

function close_window(){
    if(document.getElementById('sub_window') != null) remove('sub_window');
    greyback_off();
    return false;
}
/// back grey
function greyback_on(id,flag){
    var hide;
    var Height  = document.body.offsetHeight;
    if(id != null){
        hide = "'"+id+"'";
    }else{
        hide = "";
    }
    if(flag == null || flag == false){
        var disapear = ' onclick="greyback_off('+hide+');"';
    }
	
    /*	if(is_fixed_enabled() == false){
		var a = 'position:absolute;height:'+Height+'px;';
	}else{
		var a = 'position:fixed;height:100%;';
	}*/
    var a = 'position:fixed;height:100%;';
    var gray = '<div id="grayback" style="'+a+'width:100%;background-color:#696969;z-index:10000;filter: alpha(opacity=50);opacity:0.50;-moz-opacity: 0.5;"'+disapear+'></div>';
    document.body.innerHTML = gray+document.body.innerHTML;
}
function greyback_off(id){
    if(document.getElementById(id) != null) remove(id);
    if(document.getElementById('grayback') != null) remove('grayback');
}
function remove(id){
    if(document.getElementById(id) == null) return false;
	
    var dm=document.getElementById(id);
    var dmp=dm.parentNode;
    dmp.removeChild(dm);
    return false;
}

/* form */
var _autoFitTextareaID = new Object;
var _autoFitLength = 0;
function autoFitTextarea(id){
    var target = document.getElementById(id);
    var MIN = target.clientHeight;
	
    var clone = document.body.appendChild(document.createElement('div'));
    clone.id = "autoFitTextarea_"+id;
    with(clone.style){
        position = "absolute";
        margin = "0 0 0 -9999px";
        visibility = "hidden";
        top = "0px";
        width = target.clientWidth + 'px';
        }
	
    _autoFitTextareaID[id] = setInterval(function(){
        if(_autoFitLength != target.value.length){
            var v = escape(target.value);
            v = v.replace(/\n/g,"<br />");
            clone.innerHTML = v;
            // clone.textContent = v;
            var w = Math.max(MIN, clone.offsetHeight + MIN);
            target.style.height = w+'px';
        }
        _autoFitLength = target.value.length;
    }, 1500);
}
function stopFitTextarea(id){
    if(_autoFitTextareaID[id] != null) clearInterval(_autoFitTextareaID[id]);
    remove("autoFitTextarea_"+id);
}


/* str */
function str_pad(num,count,value) {
    var src = new String(num);
    var cnt = count - src.length;
    if (cnt <= 0) return src;
    while (cnt-- > 0) src = value + src;
    return src;
}

/* change class name */
function setClassName(el,name,exe){
    var CC = el.className;
    if(exe == null) var exe = "set";
    switch(exe){
        case "add":
        case "set":
            el.className = el.className+" "+name;
            break;
        case "remove":
        case "del":
            var re = " "+name+" ";
            CC = " "+CC+" ";
            var dd = CC.replace(new RegExp(re, 'g'),"");
            el.className = dd;
            break;
        default:
            el.className = name;
            break;
    }
}
function issetClass(el,name){
    var CC = ' '+el.className+' ';
    if(CC.match(' '+name+' ')){
        return true;
    }else{
        return false;
    }
}

/* style */
function AddStyle(selector,declarations){
    var sheets=document.styleSheets;
    if(sheets){
        var tSheet=sheets[sheets.length-1];
        if(document.all)
            tSheet.addRule(selector,declarations);
        else
            tSheet.insertRule(selector+"{"+declarations+"}",tSheet.cssRules.length);
    }
}





/* ----------------- thanks for help bellow ---------------- */

/* ------- auto disable submit http://espion.just-size.jp/archives/05/220233057.html -------  */
var DisableSubmit = {
    init: function() {
        this.addEvent(window, 'load', this.set());
    },

    set: function() {
        var self = this;
        return function() {
            self.defaulter();
            for (var i = 0; i < document.forms.length; ++i) {
                if(document.forms[i].onsubmit) continue;
                document.forms[i].onsubmit = function() {
                    self.setDisable(this.getElementsByTagName('input'));
                };
            }
        }
    },

    setDisable: function(elms) {
        for (var i = 0, elm; elm = elms[i]; i++) {
            if ((elm.type == 'submit' || elm.type == 'image') && !elm.disabled) {
                Set(elm);
            }
        }

        function Set(button) {
            window.setTimeout(function() {
                button.disabled = true;
                setClassName(button,"disabled","add");
            }, 1);
        }
    },
   
    /* modified here  */
    setEnable: function() {
        var inp = document.getElementsByTagName("input");
        for (var i = 0; i<inp.length;i++) {
            if ((inp[i].type == 'submit' || inp[i].type == 'image') && inp[i].disabled) {
                inp[i].disabled = false;
                setClassName(inp[i],"disabled","remove");
            }
        }
    },
   
    defaulter: function() {
        var self = this;
        var f = document.getElementsByTagName("form");
        for(var i=0;i<f.length;i++){
            var x = f[i];
            this.addEvent(f[i],"submit",function(){
                var inp = x.getElementsByTagName("input");
                self.defaulter_remove(inp);
                var txa = x.getElementsByTagName("textarea");
                self.defaulter_remove(txa);
            });
        }
        var t1 = document.getElementsByTagName("input");
        this.defaulter_event(t1);
        var t2 = document.getElementsByTagName("textarea");
        this.defaulter_event(t2);
    },
	
    defaulter_event: function(o){
        for(var i=0;i<o.length;i++){
            var c = o[i].className;
            if(c.match(/defaulter/i)){
                var e = o[i];
                this.addEvent(e,"focus",function(){
                    if(e.value == e.title) e.value = "";
                });
                this.addEvent(e,"blur",function(){
                    if(e.value == "") e.value = e.title;
                });
            }
        }
    },
   
    defaulter_remove: function(o){
        for(var i=0;i<o.length;i++){
            var e = o[i];
            var c = e.className;
            if(c.match(/defaulter/i)){
                if(e.value == e.title) e.value = "";
            }
        }
    },
   
    /* modofied end */


    addEvent: function(elm, type, event) {
        if(elm.addEventListener) {
            elm.addEventListener(type, event, false);
        } else if(elm.attachEvent) {
            elm.attachEvent('on'+type, event);
        } else {
            elm['on'+type] = event;
        }
    }
}
DisableSubmit.init();


/*  ------- 
	parseUri 1.2.1
	(c) 2007 Steven Levithan <stevenlevithan.com>
	MIT License
 ------- */

function parseUri (str) {
    var	o   = parseUri.options,
    m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
    uri = {},
    i   = 14;

    while (i--) uri[o.key[i]] = m[i] || "";

    uri[o.q.name] = {};
    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
        if ($1) uri[o.q.name][$1] = $2;
    });

    return uri;
}
parseUri.options = {
    strictMode: false,
    key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    q:   {
        name:   "queryKey",
        parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    },
    parser: {
        strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
        loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    }
};


/* --- */
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}